controller.dart 2.3 KB

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