import 'dart:async'; import 'package:electronic_assistant/base/base_controller.dart'; import 'package:electronic_assistant/data/bean/agenda.dart'; import 'package:electronic_assistant/dialog/alert_dialog.dart'; import 'package:electronic_assistant/module/talk/controller.dart'; import 'package:electronic_assistant/resource/colors.gen.dart'; import 'package:electronic_assistant/resource/string.gen.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import '../../../data/bean/agenda_list_all_bean.dart'; import '../../../data/bean/talks.dart'; import '../../../data/bean/template_bean.dart'; import '../../../data/consts/event_report_id.dart'; import '../../template/template_edit/view.dart'; import '../../template/template_list/view.dart'; class SummaryController extends BaseController { final String? talkId; StreamSubscription? _talkStatusListener; StreamSubscription? _talkBeanListener; SummaryController(this.talkId); TalkController get talkController => Get.find(tag: talkId); RxList get agendaAllList => talkController.agendaAllList; RxBool get _isEditModel => talkController.isEditModelRx; bool get isEditModel => _isEditModel.value; Rxn get summaryBean => talkController.talkBean; List? get templateList => talkController.templateList.value; int? get templateSelectId => talkController.templateSelectId.value; @override void onReady() { super.onReady(); _talkBeanListener = talkController.talkBean.listen((bean) { _dealTalkUpdate(); }); _talkStatusListener = talkController.talkBean.value?.status.listen((status) { if (status == TalkStatus.analysisSuccess || status == TalkStatus.analysisFail) { _dealTalkUpdate(); } }); _dealTalkUpdate(); } void _dealTalkUpdate() { talkController.refreshTalkDetail().then((data) { if (data?.status.value == TalkStatus.analysisSuccess) { eventReport(EventId.event_101100); } else if (data?.status.value == TalkStatus.analysisFail) { eventReport(EventId.event_101101); } }); talkController.refreshAgendaAllData(); } void eventReport(String eventId, {Map? params}) { talkController.eventReport(eventId, params: params); } void removeTalkAgenda(List? list, Agenda agenda) { talkController.removeTalkAgenda(list, agenda); } void showAddAgendaDialog(BuildContext context) { talkController.showSingleAddAgendaDialog(context); } void addTemplateClick() async { if (!await talkController.checkLogin()) { return; } //判断模板是否超出数量限制 TalkBean? talkBean = talkController.talkBean.value; int? maxTemplateCount = talkController.maxTemplateCount; if (talkBean == null || maxTemplateCount == null) { return; } if ((talkController.templateList.value?.length ?? 0) >= maxTemplateCount) { _showMaxTemplateDialog(); return; } bool refresh = await TemplateEditPage.addStart(); if (refresh) { talkController.refreshTalkDetail(); } } void _showMaxTemplateDialog() { EAAlertDialog.show( contentWidget: Container( padding: EdgeInsets.only(top: 20.w), child: Text( StringName.templateTooMuch.tr, style: TextStyle( fontSize: 15.sp, color: ColorName.primaryTextColor, fontWeight: FontWeight.bold), ), ), cancelText: StringName.cancel.tr, confirmText: StringName.templateToManage.tr, cancelOnTap: () { EAAlertDialog.dismiss(); }, confirmOnTap: () { EAAlertDialog.dismiss(); TemplateListPage.start(); }); } @override void onClose() { super.onClose(); _talkStatusListener?.cancel(); _talkBeanListener?.cancel(); } }