controller.dart 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import 'package:fis_jsonrpc/rpc.dart';
  2. import 'package:get/get.dart';
  3. import 'package:vnoteapp/architecture/defines.dart';
  4. import 'package:vnoteapp/managers/interfaces/patient.dart';
  5. import 'state.dart';
  6. class PatientListController extends FControllerBase {
  7. final _patientManager = Get.find<IPatientManager>();
  8. final state = PatientListState();
  9. /// 前进到详情页
  10. void gotoDetail(String code) {
  11. Get.toNamed(
  12. "/patient/detail",
  13. parameters: {"code": code},
  14. );
  15. }
  16. /// 新建档案
  17. void onCreateClicked() {
  18. Get.toNamed(
  19. "/patient/create",
  20. id: 1001,
  21. parameters: {"from": "list"},
  22. );
  23. }
  24. /// 筛选
  25. void onFilterClicked() {
  26. //
  27. }
  28. @override
  29. void onReady() {
  30. super.onReady();
  31. reloadList();
  32. }
  33. /// 重新加载列表
  34. Future<void> reloadList() async {
  35. state.pageIndex = 0;
  36. state.dataList = [];
  37. await loadNextPageList();
  38. }
  39. /// 加载下一页列表
  40. Future<void> loadNextPageList() async {
  41. final request = PatientPageRequest(
  42. pageIndex: state.pageIndex + 1,
  43. pageSize: state.pageSize,
  44. );
  45. if (state.searchString.isNotEmpty) {
  46. // TODO:
  47. // request.filter = {
  48. // "xxx": state.searchString,
  49. // };
  50. // request.isFuzzy = true;
  51. }
  52. final pagedList = await _patientManager.getPagedList(request);
  53. if (pagedList != null) {
  54. state.totalCount = pagedList.dataCount;
  55. if (pagedList.pageData != null) {
  56. state.pageIndex = state.pageIndex + 1;
  57. state.appendDataList(pagedList.pageData!);
  58. }
  59. }
  60. }
  61. }