controller.dart 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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/bean/talks.dart';
  5. import 'package:electronic_assistant/data/consts/event_report_id.dart';
  6. import 'package:electronic_assistant/data/repositories/talk_repository.dart';
  7. import 'package:flutter/cupertino.dart';
  8. import 'package:get/get.dart';
  9. import '../../../data/bean/agenda_list_all_bean.dart';
  10. import '../controller.dart';
  11. class SummaryController extends BaseController {
  12. final TalkController talkController = Get.find();
  13. final Rxn<TalkBean> summaryBean = Rxn();
  14. StreamSubscription? _talkStatusListener;
  15. StreamSubscription? _talkBeanListener;
  16. RxList<AgendaListAllBean> get agendaAllList => talkController.agendaAllList;
  17. RxBool get _isEditModel => talkController.isEditModelRx;
  18. bool get isEditModel => _isEditModel.value;
  19. @override
  20. void onReady() {
  21. super.onReady();
  22. _talkBeanListener = talkController.talkBean.listen((bean) {
  23. _dealTalkUpdate();
  24. });
  25. _talkStatusListener =
  26. talkController.talkBean.value?.status.listen((status) {
  27. _dealTalkUpdate();
  28. });
  29. _dealTalkUpdate();
  30. }
  31. void _dealTalkUpdate() {
  32. refreshSummaryData();
  33. }
  34. void refreshSummaryData() {
  35. String? id = talkController.talkBean.value?.id;
  36. if (id == null) {
  37. return;
  38. }
  39. talkRepository.talkInfo(id).then((data) {
  40. summaryBean.value = data.talkInfo;
  41. if (data.talkInfo?.status.value == TalkStatus.analysisSuccess) {
  42. eventReport(EventId.event_101100);
  43. } else if (data.talkInfo?.status.value == TalkStatus.analysisFail) {
  44. eventReport(EventId.event_101101);
  45. }
  46. });
  47. talkController.refreshAgendaAllData();
  48. }
  49. void eventReport(String eventId, {Map<String, dynamic>? params}) {
  50. talkController.eventReport(eventId, params: params);
  51. }
  52. void removeTalkAgenda(List<Agenda>? list, Agenda agenda) {
  53. talkController.removeTalkAgenda(list, agenda);
  54. }
  55. void showAddAgendaDialog(BuildContext context) {
  56. talkController.showSingleAddAgendaDialog(context);
  57. }
  58. @override
  59. void onClose() {
  60. super.onClose();
  61. _talkStatusListener?.cancel();
  62. _talkBeanListener?.cancel();
  63. }
  64. }