controller.dart 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import 'dart:async';
  2. import 'package:electronic_assistant/base/base_controller.dart';
  3. import 'package:electronic_assistant/data/bean/agenda.dart';
  4. import 'package:electronic_assistant/data/repositories/agenda_repository.dart';
  5. import 'package:electronic_assistant/module/chat/view.dart';
  6. import 'package:electronic_assistant/utils/error_handler.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:get/get.dart';
  9. import '../../../data/bean/agenda_list_all_bean.dart';
  10. import '../../../data/bean/talks.dart';
  11. import '../controller.dart';
  12. class TodoController extends BaseController {
  13. final TalkController _talkController = Get.find();
  14. StreamSubscription? _talkBeanListener;
  15. final agendaMineList = <Agenda>[].obs;
  16. final mineAgendaIsExpanded = false.obs;
  17. RxList<AgendaListAllBean> get agendaAllList => _talkController.agendaAllList;
  18. Rxn<TalkBean> get talkBean => _talkController.talkBean;
  19. @override
  20. void onReady() {
  21. super.onReady();
  22. _talkBeanListener = _talkController.talkBean.listen((bean) {
  23. _dealTalkUpdate(bean);
  24. });
  25. _dealTalkUpdate(_talkController.talkBean.value);
  26. }
  27. void _dealTalkUpdate(TalkBean? bean) {
  28. int? status = bean?.status;
  29. if (status == null) {
  30. return;
  31. }
  32. if (status == TalkStatus.analysisSuccess) {
  33. _talkController.refreshAgendaAllData();
  34. requestMineTodoData();
  35. }
  36. }
  37. void requestMineTodoData() {
  38. String? id = _talkController.talkBean.value?.id;
  39. if (id == null) {
  40. return;
  41. }
  42. agendaRepository.agendaListMine(id).then((data) {
  43. agendaMineList.value = data.list ?? [];
  44. });
  45. }
  46. @override
  47. void onClose() {
  48. super.onClose();
  49. _talkBeanListener?.cancel();
  50. }
  51. void agendaTodo(Agenda? agenda) {
  52. if (agenda == null) {
  53. return;
  54. }
  55. bool isSetTodo = !agenda.todo.value;
  56. agendaRepository.agendaTodo(agenda.id, isSetTodo).then((value) {
  57. agenda.todo.value = isSetTodo;
  58. requestMineTodoData();
  59. }).catchError((error) {
  60. ErrorHandler.toastError(error);
  61. });
  62. }
  63. void onClickThinking(Agenda agenda) {
  64. TalkBean? bean = talkBean.value;
  65. if (bean != null) {
  66. ChatPage.startByTalk(bean, agenda: agenda);
  67. } else {
  68. ChatPage.start();
  69. }
  70. }
  71. }