diff --git a/lib/data/services/meeting/meeting_task_service.dart b/lib/data/services/meeting/meeting_task_service.dart index c8d7bb9e7..b3a080d63 100644 --- a/lib/data/services/meeting/meeting_task_service.dart +++ b/lib/data/services/meeting/meeting_task_service.dart @@ -14,6 +14,7 @@ class MeetingTaskService extends GetxService { bool _isTask = false; //是否有正在处理的任务 RxInt updateListState = 0.obs; //是否更新首页列表 + RxInt localImportState = 0.obs; //是否触发本地录音导入 int meetingId = 0; RxInt tasktype = 1.obs; //任务类型,0-初始,1-等待转写中,2-转写中,3-等待总结中,4-总结中,5-完成 List textList = []; @@ -21,6 +22,10 @@ class MeetingTaskService extends GetxService { String summary = ''; String overview = ''; + void requestLocalImport() { + localImportState.value++; + } + Future addTask( int id, String audiourl, diff --git a/lib/modules/meeting/controllers/meeting_home_controller.dart b/lib/modules/meeting/controllers/meeting_home_controller.dart index 1e0cf5b4d..910431d64 100644 --- a/lib/modules/meeting/controllers/meeting_home_controller.dart +++ b/lib/modules/meeting/controllers/meeting_home_controller.dart @@ -49,6 +49,7 @@ class MeetingHomeController extends GetxController { final bleManager = Get.find(); late final Worker _updateListStateListener; + late final Worker _localImportListener; @override void onInit() { @@ -69,6 +70,9 @@ class MeetingHomeController extends GetxController { ever(meetingTaskService.updateListState, (value) async { _getDataList(); }); + _localImportListener = ever(meetingTaskService.localImportState, (value) { + addMeetingAudio(); + }); } @override @@ -77,6 +81,7 @@ class MeetingHomeController extends GetxController { filtrateController.dispose(); _audioPlayer.dispose(); _updateListStateListener.dispose(); + _localImportListener.dispose(); super.onClose(); } diff --git a/lib/modules/meeting/controllers/meeting_record_controller.dart b/lib/modules/meeting/controllers/meeting_record_controller.dart index 405fcef1f..529db22b6 100644 --- a/lib/modules/meeting/controllers/meeting_record_controller.dart +++ b/lib/modules/meeting/controllers/meeting_record_controller.dart @@ -18,6 +18,7 @@ import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import '../../../routes/app_routes.dart'; import '../../../data/services/asr_service.dart'; import '../../../data/services/ble_manager.dart'; +import '../../../data/services/meeting/meeting_task_service.dart'; /// 会议记录状态枚举 enum TimerStatus { @@ -234,7 +235,10 @@ class MeetingRecordController extends GetxController return; case 'closeFloatingBar': if (isRecording.value) { - await saveRecording(); + final saved = await saveRecording(); + if (saved && Get.isRegistered()) { + Get.find().requestLocalImport(); + } return; } _floatingBarManuallyClosed = true; diff --git a/lib/modules/meeting/views/meeting_record_view.dart b/lib/modules/meeting/views/meeting_record_view.dart index 7ce7fa7b7..f2bf8f9d3 100644 --- a/lib/modules/meeting/views/meeting_record_view.dart +++ b/lib/modules/meeting/views/meeting_record_view.dart @@ -5,6 +5,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import '../controllers/meeting_record_controller.dart'; import '../../../core/theme/app_colors.dart'; +import '../../../data/services/meeting/meeting_task_service.dart'; /// 会议录音退出操作 enum _MeetingRecordExitAction { @@ -18,6 +19,11 @@ enum _MeetingRecordExitAction { class MeetingRecordView extends GetView { const MeetingRecordView({super.key}); + void _notifyMeetingLocalImport() { + if (!Get.isRegistered()) return; + Get.find().requestLocalImport(); + } + void _deleteControllerAfterPop() { Future.delayed(const Duration(milliseconds: 400), () { if (Get.isRegistered()) { @@ -216,6 +222,7 @@ class MeetingRecordView extends GetView { await controller.saveTitleChange(); final saved = await controller.saveRecording(); if (saved) { + _notifyMeetingLocalImport(); Get.back(result: 'meeting_record_saved'); _deleteControllerAfterPop(); }