controller.dart 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import 'package:electronic_assistant/base/base_controller.dart';
  2. import 'package:electronic_assistant/data/repositories/agenda_repository.dart';
  3. import 'package:electronic_assistant/utils/error_handler.dart';
  4. import 'package:flutter/cupertino.dart';
  5. import 'package:get/get_rx/src/rx_types/rx_types.dart';
  6. import 'package:pull_to_refresh/pull_to_refresh.dart';
  7. import '../../data/api/request/agenda_request.dart';
  8. import '../../data/bean/agenda.dart';
  9. import 'detail/view.dart';
  10. class AgendaController extends BaseController {
  11. String get filterTxt => '展示近两周待办';
  12. final agendaDetailPopupTag = 'agendaDetailPopupTag';
  13. final todoIsExpanded = true.obs;
  14. final doneIsExpanded = true.obs;
  15. final refreshController = RefreshController(initialRefresh: false);
  16. final RxList<Agenda> agendaTodoList = <Agenda>[].obs;
  17. final RxList<Agenda> agendaDoneList = <Agenda>[].obs;
  18. final doneSize = 0.obs;
  19. final int limit = 10;
  20. int _timeFilterIndex = 0;
  21. int get timeFilterIndex => _timeFilterIndex;
  22. @override
  23. void onReady() {
  24. refreshTodoTaskList();
  25. agendaDonePage(0, limit, isClearAll: true);
  26. }
  27. void setTimeFilterIndex(int index) {
  28. _timeFilterIndex = index;
  29. }
  30. void onLoadMoreDoneData() {
  31. agendaDonePage(agendaDoneList.length, limit);
  32. }
  33. agendaDonePage(int offset, int limit, {bool? isClearAll}) {
  34. agendaRepository
  35. .agendaPage(offset, limit, completeStatus: TaskStatus.DONE)
  36. .then((response) {
  37. doneSize.value = response.count;
  38. if (isClearAll == true) {
  39. agendaDoneList.clear();
  40. }
  41. if (response.list != null) {
  42. agendaDoneList.addAll(response.list!);
  43. }
  44. if (agendaDoneList.length >= response.count) {
  45. debugPrint("refreshAgendaPage-没有更多数据了");
  46. refreshController.loadNoData();
  47. } else {
  48. refreshController.loadComplete();
  49. }
  50. refreshController.refreshCompleted();
  51. }).catchError((error) {
  52. refreshController.loadFailed();
  53. refreshController.refreshFailed();
  54. ErrorHandler.toastError(error);
  55. });
  56. }
  57. refreshTodoTaskList() {
  58. agendaRepository
  59. .agendaPage(0, 999, completeStatus: TaskStatus.TODO)
  60. .then((response) {
  61. agendaTodoList.clear();
  62. if (response.list != null) {
  63. agendaTodoList.addAll(response.list!);
  64. }
  65. }).catchError((error) {
  66. ErrorHandler.toastError(error);
  67. });
  68. }
  69. void onClickTodoGroup() {
  70. todoIsExpanded.value = !todoIsExpanded.value;
  71. }
  72. void onClickDoneGroup() {
  73. doneIsExpanded.value = !doneIsExpanded.value;
  74. }
  75. void agendaComplete(Agenda item, bool isComplete) {
  76. agendaRepository.agendaFinish(item.id, isComplete).then((data) {
  77. agendaRepository.requestHomeAgendaData();
  78. _refreshData();
  79. }).catchError((error) {
  80. ErrorHandler.toastError(error);
  81. });
  82. }
  83. void _refreshData() {
  84. refreshTodoTaskList();
  85. int size;
  86. if (agendaDoneList.isEmpty || agendaDoneList.length < limit) {
  87. size = limit;
  88. } else {
  89. size = agendaDoneList.length;
  90. }
  91. agendaDonePage(0, size, isClearAll: true);
  92. }
  93. void onAgendaCancel(Agenda item) {
  94. agendaRepository.agendaTodo(item.id, false).then((value) {
  95. agendaRepository.requestHomeAgendaData();
  96. _refreshData();
  97. }).catchError((error) {
  98. ErrorHandler.toastError(error);
  99. });
  100. }
  101. void onAgendaUpdate(Agenda item) {
  102. AgendaDetailPage.start(item);
  103. }
  104. }