import 'package:cpt_main/modules/notification/notification_group_data.dart'; import 'package:plugin_platform/engine/toast/toast_engine.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:widgets/load_state_layout.dart'; import 'package:widgets/widget_export.dart'; import 'notification_state.dart'; part 'notification_view_model.g.dart'; @riverpod class NotificationViewModel extends _$NotificationViewModel { @override NotificationState build() { return NotificationState(datas: []); } var _curPage = 1; //请求参数当前的页面 var _needShowPlaceholder = true; //是否展示LoadingView // Refresh 控制器 final EasyRefreshController refreshController = EasyRefreshController( controlFinishRefresh: true, //允许刷新 controlFinishLoad: true, //允许加载 ); //刷新页面状态 void changeLoadingState(LoadState loadState, String? errorMsg) { state = state.copyWith(loadingState: loadState, errorMessage: errorMsg); } // Refresh 刷新事件 Future onRefresh() async { _curPage = 1; fetchList(); } // Refresh 加载事件 Future loadMore() async { _curPage++; fetchList(); } // 重试请求 Future retryRequest() async { _curPage = 1; _needShowPlaceholder = true; fetchList(); } /// 获取服务器数据 Future fetchList() async { if (_needShowPlaceholder) { changeLoadingState(LoadState.State_Loading, null); } // 获取 Applied 列表 // var listResult = await _jobRepository.fetchJobAppliedList( // state.jobId, // state.selectedStatusId, // state.keyword, // curPage: _curPage, // cancelToken: cancelToken, // ); // // // 处理数据 // if (listResult.isSuccess) { // handleList(listResult.data?.rows); // } else { // errorMessage = listResult.errorMsg; // changeLoadingState(LoadState.State_Error); // } await Future.delayed(const Duration(milliseconds: 1500)); List list = []; if (_curPage > 1) { //这里只加载一页吧 } else { list.add(NotificationGroupData() ..groupId = "Toady" ..groupDatas = ["1", "2", "3", "4"]); list.add(NotificationGroupData() ..groupId = "Friday 11 oct 2024" ..groupDatas = ["1", "2", "3"]); list.add(NotificationGroupData() ..groupId = "Thursday 10 oct 2024" ..groupDatas = ["1", "2"]); list.add(NotificationGroupData() ..groupId = "Wednesday 9 oct 2024" ..groupDatas = ["1"]); } if (_curPage == 1) { //刷新的方式 state = state.copyWith(datas: list); refreshController.finishRefresh(); //更新展示的状态 changeLoadingState(LoadState.State_Success, null); } else { //加载更多 final allList = state.datas; allList.addAll(list); state.datas.addAll(list); // refreshController.finishLoad(); refreshController.finishLoad(IndicatorResult.noMore); state = state.copyWith(datas: allList); } // 最后赋值 _needShowPlaceholder = false; } // 处理数据与展示的逻辑 // void handleList(List? list) { // if (list != null && list.isNotEmpty) { // //有数据,判断是刷新还是加载更多的数据 // if (_curPage == 1) { // //刷新的方式 // state.datas.clear(); // state.datas.addAll(list); // refreshController.finishRefresh(); // // //更新展示的状态 // changeLoadingState(LoadState.State_Success); // } else { // //加载更多 // state.datas.addAll(list); // refreshController.finishLoad(); // update(); // } // } else { // if (_curPage == 1) { // //展示无数据的布局 // state.datas.clear(); // changeLoadingState(LoadState.State_Empty); // refreshController.finishRefresh(); // } else { // //展示加载完成,没有更多数据了 // refreshController.finishLoad(IndicatorResult.noMore); // } // } // } /// 点击标记全部 void markAll() { ToastEngine.show("点击标记全部"); } }