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), ) .toList(), ]; } else if (item['module_key'] == 'highest_payment_hot_video') { state.topPickList = [ ...item['data'] .map( (item) => KtShortVideoBean.fromJson(item as Map), ) .toList(), ]; } else if (item['module_key'] == 'new_recommand') { state.arrivalList = [ ...item['data']['list'] .map( (item) => KtShortVideoBean.fromJson(item as Map), ) .toList(), ]; } else if (item['module_key'] == 'week_highest_recommend') { state.trendingList = [ ...item['data'] .map( (item) => KtShortVideoBean.fromJson(item as Map), ) .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(); } } }