import 'package:plugin_platform/engine/dialog/dialog_engine.dart'; import 'package:plugin_platform/engine/toast/toast_engine.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:shared/utils/log_utils.dart'; import 'package:widgets/dialog/app_default_dialog.dart'; import 'package:widgets/load_state_layout.dart'; import 'package:widgets/widget_export.dart'; import '../../add_card/add_card_page.dart'; import 'manage_state.dart'; part 'manage_view_model.g.dart'; @riverpod class ManageViewModel extends _$ManageViewModel { var _curPage = 1; //请求参数当前的页面 var _needShowPlaceholder = true; //是否展示LoadingView // Refresh 控制器 final EasyRefreshController refreshController = EasyRefreshController( controlFinishRefresh: true, //允许刷新 controlFinishLoad: true, //允许加载 ); @override ManageState build() { return ManageState(datas: []); } //刷新页面状态 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)); final List list = [true, false, false, false]; 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(); 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 setAsPrimary(int index) { bool isPrimary = state.datas[index]; if (!isPrimary) { // 创建数据列表的副本 List newDataList = List.from(state.datas); //先全部设置为 false for (int i = 0; i < newDataList.length; i++) { newDataList[i] = false; } //再把当前索引设置为 true newDataList[index] = true; state = state.copyWith(datas: newDataList); } } // 删除提示弹窗 void showDeleteDialog(int index) { DialogEngine.show( widget: AppDefaultDialog( message: "Are you sure you want to delete this Card?", confirmAction: () { ToastEngine.show("点击了确定"); }, )); } //去添加新卡的页面 void gotoAddCardPage() { AddCardPage.startInstance(); } }