Browse Source

feat(会议): 添加本地录音导入触发功能

在会议录音保存时触发本地录音导入流程
添加MeetingTaskService中的localImportState状态和请求方法
在MeetingHomeController中监听状态变化并调用导入方法
newdev_shunjiawei
lxm 9 months ago
parent
commit
5a041a0ed9
  1. 5
      lib/data/services/meeting/meeting_task_service.dart
  2. 5
      lib/modules/meeting/controllers/meeting_home_controller.dart
  3. 6
      lib/modules/meeting/controllers/meeting_record_controller.dart
  4. 7
      lib/modules/meeting/views/meeting_record_view.dart

5
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<void> addTask(
int id,
String audiourl,

5
lib/modules/meeting/controllers/meeting_home_controller.dart

@ -49,6 +49,7 @@ class MeetingHomeController extends GetxController {
final bleManager = Get.find<BleManager>();
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();
}

6
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<MeetingTaskService>()) {
Get.find<MeetingTaskService>().requestLocalImport();
}
return;
}
_floatingBarManuallyClosed = true;

7
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<MeetingRecordController> {
const MeetingRecordView({super.key});
void _notifyMeetingLocalImport() {
if (!Get.isRegistered<MeetingTaskService>()) return;
Get.find<MeetingTaskService>().requestLocalImport();
}
void _deleteControllerAfterPop() {
Future.delayed(const Duration(milliseconds: 400), () {
if (Get.isRegistered<MeetingRecordController>()) {
@ -216,6 +222,7 @@ class MeetingRecordView extends GetView<MeetingRecordController> {
await controller.saveTitleChange();
final saved = await controller.saveRecording();
if (saved) {
_notifyMeetingLocalImport();
Get.back(result: 'meeting_record_saved');
_deleteControllerAfterPop();
}

Loading…
Cancel
Save