controller.dart 3.3 KB

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