2025-09-12 14:19:13 +08:00

89 lines
2.8 KiB
Dart

import 'package:flutter_kinetra/kt_pages/kt_home/state.dart';
import 'package:get/get.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import '../../dio_cilent/kt_apis.dart';
import '../../dio_cilent/kt_request.dart';
import '../../kt_model/kt_short_video_bean.dart';
import '../../kt_widgets/kt_status_widget.dart';
class KtHomeLogic extends GetxController {
final state = KtHomeState();
@override
void onReady() {
// TODO: implement onReady
super.onReady();
getHomeInfo();
}
getHomeInfo({RefreshController? refreshCtrl}) async {
state.loadStatus = KtLoadStatusType.loading;
try {
ApiResponse res = await HttpClient().request(
KtApis.homeAllModules,
method: HttpMethod.get,
);
refreshCtrl?.refreshCompleted();
if (res.success) {
state.loadStatus = KtLoadStatusType.loadSuccess;
res.data['list'].forEach((item) {
if (item['module_key'] == 'home_banner') {
state.bannerList = [
...item['data']
.map(
(item) =>
KtShortVideoBean.fromJson(item as Map<String, dynamic>),
)
.toList(),
];
} else if (item['module_key'] == 'highest_payment_hot_video') {
state.topPickList = [
...item['data']
.map(
(item) =>
KtShortVideoBean.fromJson(item as Map<String, dynamic>),
)
.toList(),
];
} else if (item['module_key'] == 'new_recommand') {
state.arrivalList = [
...item['data']['list']
.map(
(item) =>
KtShortVideoBean.fromJson(item as Map<String, dynamic>),
)
.toList(),
];
} else if (item['module_key'] == 'week_highest_recommend') {
state.trendingList = [
...item['data']
.map(
(item) =>
KtShortVideoBean.fromJson(item as Map<String, dynamic>),
)
.toList(),
];
int halfLength = state.trendingList.length ~/ 2;
state.trendingTopList = state.trendingList.sublist(0, halfLength);
state.trendingBottomList = state.trendingList.sublist(halfLength);
}
});
if (state.trendingList.isEmpty &&
state.bannerList.isEmpty &&
state.arrivalList.isEmpty) {
state.loadStatus = KtLoadStatusType.loadNoData;
}
} else {
state.loadStatus = KtLoadStatusType.loadFailed;
}
update();
} catch (e) {
state.loadStatus = KtLoadStatusType.loadFailed;
update();
}
}
}