controller.dart 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import 'package:electronic_assistant/base/base_controller.dart';
  2. import 'package:electronic_assistant/utils/error_handler.dart';
  3. import 'package:get/get.dart';
  4. import 'package:get/get_core/src/get_main.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/response/example_info_response.dart';
  8. import '../../../data/bean/agenda.dart';
  9. import '../../../data/repositories/account_repository.dart';
  10. import '../../../data/repositories/agenda_repository.dart';
  11. import '../../../data/repositories/config_repository.dart';
  12. import '../../../resource/string.gen.dart';
  13. import '../../../router/app_pages.dart';
  14. import '../../../utils/event_bus.dart';
  15. import '../../../utils/toast_util.dart';
  16. import '../../agenda/detail/view.dart';
  17. class HomeAgendaController extends BaseController {
  18. final refreshController = RefreshController(initialRefresh: false);
  19. RxList<Agenda> get agendaList => agendaRepository.agendaList;
  20. @override
  21. void onReady() {
  22. super.onReady();
  23. eventBus.on(EventUserLogin, (arg) {
  24. requestHomeAgendaData();
  25. });
  26. eventBus.on(EventUserLogout, (arg) {
  27. agendaRepository.setAgendaList([]);
  28. requestHomeAgendaData();
  29. });
  30. requestHomeAgendaData();
  31. }
  32. @override
  33. void onClose() {
  34. eventBus.off(EventUserLogin);
  35. eventBus.off(EventUserLogout);
  36. }
  37. void requestHomeAgendaData() async {
  38. try {
  39. if (accountRepository.isLogin.value) {
  40. await agendaRepository.requestHomeAgendaData();
  41. } else {
  42. ExampleInfoResponse exampleInfo =
  43. await configRepository.getExampleInfo();
  44. agendaRepository.setAgendaList(
  45. exampleInfo.agendaList != null ? exampleInfo.agendaList! : []);
  46. }
  47. } catch (e) {
  48. ErrorHandler.toastError(e);
  49. } finally {
  50. refreshController.refreshCompleted();
  51. }
  52. }
  53. onRefresh() {
  54. requestHomeAgendaData();
  55. }
  56. void onGoAgendaSeeAll() {
  57. if (!accountRepository.isLogin.value) {
  58. Get.toNamed(RoutePath.login);
  59. ToastUtil.showToast(StringName.errorCodeNoLogin.tr);
  60. return;
  61. }
  62. Get.toNamed(RoutePath.task);
  63. }
  64. void onAgendaItemClick(Agenda item) {
  65. AgendaDetailPage.start(item);
  66. }
  67. void agendaComplete(Agenda item) {
  68. agendaRepository.agendaFinish(item.id, true).then((data) {
  69. agendaRepository.requestHomeAgendaData();
  70. }).catchError((error) {
  71. ErrorHandler.toastError(error);
  72. });
  73. }
  74. }