From 4f2bf0f1bf081f2c7cb3b1278fe79228fdca9b55 Mon Sep 17 00:00:00 2001 From: tanlongsheng <252620078@qq.com> Date: Fri, 18 Jul 2025 22:37:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BC=9A=E8=AE=AE=E5=8A=A9?= =?UTF-8?q?=E6=89=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../meeting_details_controller.dart | 3 ++ .../controllers/mind_map_controller.dart | 10 ++++++ .../bottomSheet/speaker_all_bottom_sheet.dart | 2 ++ .../bottomSheet/speaker_bottom_sheet.dart | 1 + .../meeting/views/tabs/summary_tab.dart | 32 +++++++++++-------- 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/lib/modules/meeting/controllers/meeting_details_controller.dart b/lib/modules/meeting/controllers/meeting_details_controller.dart index ae56f94f9..65fd39ea2 100644 --- a/lib/modules/meeting/controllers/meeting_details_controller.dart +++ b/lib/modules/meeting/controllers/meeting_details_controller.dart @@ -55,6 +55,8 @@ class MeetingDetailsController extends GetxController String editSpeakerTextChange = ''; int _everType = 99; + RxInt summaryNumberModifications = 0.obs; + RxInt personnelNumberModifications = 0.obs; String markmapLibJs = ''; String d3Js = ''; @@ -90,6 +92,7 @@ class MeetingDetailsController extends GetxController } else if (value == 3) { meetingDetails.value.summary = _meetingTaskService.summary; meetingDetails.value.overview = _meetingTaskService.overview; + summaryNumberModifications.value++; } } meetingDetails.refresh(); diff --git a/lib/modules/meeting/controllers/mind_map_controller.dart b/lib/modules/meeting/controllers/mind_map_controller.dart index d30244f29..b2a229f93 100644 --- a/lib/modules/meeting/controllers/mind_map_controller.dart +++ b/lib/modules/meeting/controllers/mind_map_controller.dart @@ -108,6 +108,12 @@ class MindMapController extends GetxController { const toolbarElement = document.getElementById('toolbar'); toolbarElement.append(el); + window.updateMarkmap = async function(value) { + const { root } = transformer.transform(value); + await mm.setData(root); + await mm.fit(); + } + window.captureImage = async function() { const markmapElement = document.getElementById('markmap'); markmapElement.style.height = `${_width}px`; @@ -144,6 +150,10 @@ class MindMapController extends GetxController { ) ..setBackgroundColor(Colors.transparent) ..loadHtmlString(html); + ever(_meetingDetailsController.summaryNumberModifications, (value) { + webViewController.runJavaScript( + 'updateMarkmap(`${_meetingDetailsController.meetingDetails.value.summary}`)'); + }); } void _messageReceived(message) async { diff --git a/lib/modules/meeting/views/bottomSheet/speaker_all_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/speaker_all_bottom_sheet.dart index 0134569d5..07ba347b0 100644 --- a/lib/modules/meeting/views/bottomSheet/speaker_all_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/speaker_all_bottom_sheet.dart @@ -576,10 +576,12 @@ class _SpeakerAllBottomSheetState extends State { 'personnel': personnel, }); _controller.meetingDetails.value.summary = summaryText; + _controller.summaryNumberModifications.value++; } else { SqfliteApi.editMeeting(_controller.id, {'personnel': personnel}); } _controller.meetingDetails.value.personnel = personnel; + _controller.personnelNumberModifications.value++; _controller.meetingDetails.refresh(); _storage.write("speaker_list", _historySpeakerList); Get.back(); diff --git a/lib/modules/meeting/views/bottomSheet/speaker_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/speaker_bottom_sheet.dart index 9f9e02f68..3c7e69dad 100644 --- a/lib/modules/meeting/views/bottomSheet/speaker_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/speaker_bottom_sheet.dart @@ -382,6 +382,7 @@ class _SpeakerBottomSheetState extends State { 'personnel': personnel, }); _controller.meetingDetails.value.summary = summaryText; + _controller.summaryNumberModifications.value++; } else { SqfliteApi.editMeeting(_controller.id, {'personnel': personnel}); } diff --git a/lib/modules/meeting/views/tabs/summary_tab.dart b/lib/modules/meeting/views/tabs/summary_tab.dart index 2ffbaac3b..f29b327af 100644 --- a/lib/modules/meeting/views/tabs/summary_tab.dart +++ b/lib/modules/meeting/views/tabs/summary_tab.dart @@ -36,6 +36,20 @@ class _SummaryTabState extends State { @override void initState() { super.initState(); + _initController(); + _addressController.addListener(_handleAddressChanged); + _personnelController.addListener(_handlePersonnelChanged); + _focusNode.addListener(() { + setState(() { + _hasFocus = _focusNode.hasFocus; + }); + }); + ever(_controller.personnelNumberModifications, (value) { + _initController(); + }); + } + + void _initController() { _addressController.text = _addressPrefix + (_controller.meetingDetails.value.address.isNotEmpty ? _controller.meetingDetails.value.address @@ -44,9 +58,9 @@ class _SummaryTabState extends State { (_controller.meetingDetails.value.personnel.isNotEmpty ? _controller.meetingDetails.value.personnel : '[输入与会人员]'); - _addressController.addListener(_handleAddressChanged); - _personnelController.addListener(_handlePersonnelChanged); - _initController(); + final markdown = const ParchmentMarkdownCodec() + .decode(_controller.meetingDetails.value.summary); + _fleatherController = FleatherController(document: markdown); } void _handleAddressChanged() { @@ -109,17 +123,6 @@ class _SummaryTabState extends State { } } - Future _initController() async { - final markdown = const ParchmentMarkdownCodec() - .decode(_controller.meetingDetails.value.summary); - _fleatherController = FleatherController(document: markdown); - _focusNode.addListener(() { - setState(() { - _hasFocus = _focusNode.hasFocus; - }); - }); - } - void _saveSummary() async { final markdown = const ParchmentMarkdownCodec().encode(_fleatherController!.document); @@ -129,6 +132,7 @@ class _SummaryTabState extends State { {'summary': markdown}, ); _controller.meetingDetails.value.summary = markdown; + _controller.summaryNumberModifications.value++; } _focusNode.dispose(); _fleatherController?.dispose();