controller.dart 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import 'package:get/get.dart';
  2. import 'package:vitalapp/architecture/defines.dart';
  3. import 'package:vitalapp/architecture/utils/prompt_box.dart';
  4. import 'package:vitalapp/database/entities/defines.dart';
  5. import 'package:vitalapp/global.dart';
  6. import 'package:vitalapp/managers/interfaces/data_sync.dart';
  7. import 'state.dart';
  8. class SyncCenterController extends FControllerBase {
  9. final state = SyncCenterState();
  10. final syncManager = Get.find<IDataSyncManager>();
  11. @override
  12. void onReady() {
  13. super.onReady();
  14. reloadPageList();
  15. }
  16. /// 获取可上传(筛选后)的数量
  17. Future<int> getCanUploadCount() async {
  18. final result = await syncManager.getPatientPagedList(
  19. 1,
  20. isReturnCountOnly: true,
  21. syncStates: [
  22. OfflineDataSyncState.fail,
  23. OfflineDataSyncState.wait,
  24. ],
  25. );
  26. return result.totalCount;
  27. }
  28. /// 单个上传
  29. ///
  30. /// [index] 选择的索引
  31. Future<void> uploadSingle(int index) async {
  32. if (!kIsOnline) {
  33. PromptBox.toast("请检查网络连接");
  34. return;
  35. }
  36. SyncCenterDataModel model = state.dataList[index];
  37. final data = model.data;
  38. final patientCode = data.code;
  39. setBusy("正在上传...");
  40. await Future.delayed(const Duration(milliseconds: 500));
  41. final result = await syncManager.syncPatientAllData(patientCode);
  42. // 刷新列表
  43. await reloadPageList();
  44. cancelBusy();
  45. final message = "上传${result ? "成功" : "失败"}";
  46. PromptBox.toast(message);
  47. }
  48. /// 加载分页列表
  49. Future<void> reloadPageList() async {
  50. state.pageIndex = 1;
  51. state.dataList = [];
  52. await loadNextPageList();
  53. }
  54. /// 追加下一页数据
  55. Future<void> loadNextPageList() async {
  56. busy = true;
  57. final pagedList = await syncManager.getPatientPagedList(
  58. state.pageIndex,
  59. syncStates: state.syncState != null ? [state.syncState!] : [],
  60. );
  61. state.totalCount = pagedList.totalCount;
  62. final appendList =
  63. pagedList.data.map((e) => SyncCenterDataModel(e)).toList();
  64. state.dataList = [...state.dataList, ...appendList];
  65. state.pageIndex = state.pageIndex + 1;
  66. busy = false;
  67. }
  68. }