89 lines
2.8 KiB
Dart
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();
|
|
}
|
|
}
|
|
}
|