main_controller.dart 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import 'package:cpt_auth/modules/setting/setting_page.dart';
  2. import 'package:domain/entity/home_module.dart';
  3. import 'package:get/get.dart';
  4. import 'package:plugin_platform/engine/toast/toast_engine.dart';
  5. import 'package:widgets/load_state_layout.dart';
  6. import 'package:widgets/widget_export.dart';
  7. import 'main_state.dart';
  8. class MainController extends GetxController {
  9. final MainState state = MainState();
  10. var _needShowPlaceholder = true;
  11. //页面PlaceHolder的展示
  12. LoadState loadingState = LoadState.State_Success;
  13. String? errorMessage;
  14. //刷新页面状态
  15. void changeLoadingState(LoadState state) {
  16. loadingState = state;
  17. update();
  18. }
  19. // Refresh 控制器
  20. final EasyRefreshController refreshController = EasyRefreshController(
  21. controlFinishRefresh: true,
  22. controlFinishLoad: false,
  23. );
  24. // Refresh 刷新事件
  25. Future onRefresh() async {
  26. fetchHomeData();
  27. }
  28. // 重试请求
  29. Future retryRequest() async {
  30. _needShowPlaceholder = true;
  31. fetchHomeData();
  32. }
  33. /// 获取首页的数据
  34. void fetchHomeData() async {
  35. //todo 这里需要调用接口实现
  36. if (_needShowPlaceholder) {
  37. changeLoadingState(LoadState.State_Loading);
  38. }
  39. await Future.delayed(Duration(seconds: 1));
  40. state.datas.clear();
  41. state.datas.addAll(state.modules);
  42. //更新状态
  43. changeLoadingState(LoadState.State_Success);
  44. refreshController.finishRefresh();
  45. //最后赋值
  46. _needShowPlaceholder = false;
  47. }
  48. @override
  49. void onReady() async {
  50. super.onReady();
  51. fetchHomeData();
  52. }
  53. /// 跳转到指定的模块中去
  54. void gotoModulePage(HomeModule module) {
  55. switch (module.moduleId) {
  56. case '1':
  57. ToastEngine.show("进入 Labour Request 模块");
  58. break;
  59. case '2':
  60. ToastEngine.show("进入 Job List 模块");
  61. break;
  62. case '3':
  63. ToastEngine.show("进入 Sign in Sign out 模块");
  64. break;
  65. case '4':
  66. ToastEngine.show("进入 Devices 模块");
  67. break;
  68. case '5':
  69. ToastEngine.show("进入 Labour Request Review 模块");
  70. break;
  71. case '6':
  72. ToastEngine.show("进入 Attendance Review 模块");
  73. break;
  74. case '7':
  75. ToastEngine.show("进入 Default Job Title 模块");
  76. break;
  77. case '8':
  78. ToastEngine.show("进入 Report 模块");
  79. break;
  80. }
  81. }
  82. /// 跳转到设置页面
  83. void gotoSettingPage() {
  84. SettingPage.startInstance();
  85. }
  86. }