Browse Source

会议助手增加等待动画

newdev_shunjiawei
tanlongsheng 1 year ago
parent
commit
9a09dcf489
  1. 1
      assets/lottie/meeting_wait.json
  2. 2
      lib/modules/meeting/controllers/meeting_controller.dart
  3. 21
      lib/modules/meeting/controllers/meeting_details_controller.dart
  4. 48
      lib/modules/meeting/views/meeting_details_view.dart
  5. 6
      lib/modules/meeting/views/speech_tab.dart
  6. 4
      lib/modules/meeting/views/summary_tab.dart

1
assets/lottie/meeting_wait.json

File diff suppressed because one or more lines are too long

2
lib/modules/meeting/controllers/meeting_controller.dart

@ -75,7 +75,7 @@ class MeetingController extends GetxController {
int creationTime = DateTime.now().millisecondsSinceEpoch; int creationTime = DateTime.now().millisecondsSinceEpoch;
Map<String, Object?> data = { Map<String, Object?> data = {
'title': fileName, 'title': fileName,
'type': 'NOTE', 'type': 'IMPORT',
'seconds': seconds, 'seconds': seconds,
'filepath': filePath, 'filepath': filePath,
'audiourl': audiourl, 'audiourl': audiourl,

21
lib/modules/meeting/controllers/meeting_details_controller.dart

@ -100,7 +100,7 @@ class MeetingDetailsController extends GetxController
final data = await SqfliteApi.getMeetingDetails(id); final data = await SqfliteApi.getMeetingDetails(id);
meetingData.value = MeetingModel.fromJson(data); meetingData.value = MeetingModel.fromJson(data);
meetingDetails.value = MeetingDetailsModel.fromJson(data['details']); meetingDetails.value = MeetingDetailsModel.fromJson(data['details']);
if (meetingDetails.value.summary.isNotEmpty) { if (meetingDetails.value.tasktype >= 3) {
dragOffset.value = 0; dragOffset.value = 0;
isTop.value = true; isTop.value = true;
} }
@ -129,7 +129,7 @@ class MeetingDetailsController extends GetxController
lottieController.stop(); lottieController.stop();
} }
}); });
if (meetingDetails.value.tasktype == 1) { if (meetingDetails.value.tasktype >= 2) {
List speakerList = await SqfliteApi.getMeetingSpeaker(id); List speakerList = await SqfliteApi.getMeetingSpeaker(id);
textList.value = List.from(speakerList); textList.value = List.from(speakerList);
} }
@ -177,8 +177,7 @@ class MeetingDetailsController extends GetxController
} }
void summaryCreate() async { void summaryCreate() async {
EasyLoading.show(); if (meetingDetails.value.tasktype == 0) {
if (meetingDetails.value.tasktype != 1) {
await _audioSpeaker(); await _audioSpeaker();
} }
if (allText.isEmpty) { if (allText.isEmpty) {
@ -192,7 +191,6 @@ class MeetingDetailsController extends GetxController
allText = text; allText = text;
} }
await _aiServiceSummary(); await _aiServiceSummary();
EasyLoading.dismiss();
} }
Future<void> _aiServiceSummary() async { Future<void> _aiServiceSummary() async {
@ -202,12 +200,14 @@ class MeetingDetailsController extends GetxController
{'role': 'user', 'content': allText}, {'role': 'user', 'content': allText},
], ],
); );
SqfliteApi.editMeeting(id, {'summary': summaryText}); SqfliteApi.editMeeting(id, {'tasktype': 3, 'summary': summaryText});
meetingDetails.value.tasktype = 3;
meetingDetails.value.summary = summaryText; meetingDetails.value.summary = summaryText;
meetingDetails.refresh(); meetingDetails.refresh();
} }
Future<void> _audioSpeaker() async { Future<void> _audioSpeaker() async {
EasyLoading.show();
String audiourl = meetingData.value.audiourl; String audiourl = meetingData.value.audiourl;
if (audiourl.isEmpty) { if (audiourl.isEmpty) {
audiourl = await UploadOss.upload( audiourl = await UploadOss.upload(
@ -219,9 +219,12 @@ class MeetingDetailsController extends GetxController
String taskId = meetingDetails.value.taskid; String taskId = meetingDetails.value.taskid;
if (taskId.isEmpty) { if (taskId.isEmpty) {
taskId = await _submitTask(audiourl); taskId = await _submitTask(audiourl);
await SqfliteApi.editMeeting(id, {'tasktype': 1, 'taskid': taskId});
meetingDetails.value.taskid = taskId; meetingDetails.value.taskid = taskId;
await SqfliteApi.editMeeting(id, {'taskid': taskId}); meetingDetails.value.tasktype = 1;
meetingDetails.refresh();
} }
EasyLoading.dismiss();
await _fileRecognize(taskId); await _fileRecognize(taskId);
} }
@ -354,10 +357,10 @@ class MeetingDetailsController extends GetxController
} }
var result = await SqfliteApi.insertMeetingSpeaker(list); var result = await SqfliteApi.insertMeetingSpeaker(list);
if (result != null) { if (result != null) {
await SqfliteApi.editMeeting(id, {'tasktype': 1, 'personnel': personnel}); await SqfliteApi.editMeeting(id, {'tasktype': 2, 'personnel': personnel});
List speakerList = await SqfliteApi.getMeetingSpeaker(id); List speakerList = await SqfliteApi.getMeetingSpeaker(id);
textList.value = List.from(speakerList); textList.value = List.from(speakerList);
meetingDetails.value.tasktype = 1; meetingDetails.value.tasktype = 2;
meetingDetails.value.personnel = personnel; meetingDetails.value.personnel = personnel;
meetingDetails.refresh(); meetingDetails.refresh();
} }

48
lib/modules/meeting/views/meeting_details_view.dart

@ -3,6 +3,7 @@ import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:lottie/lottie.dart';
import '../../../core/theme/app_colors.dart'; import '../../../core/theme/app_colors.dart';
import '../controllers/meeting_details_controller.dart'; import '../controllers/meeting_details_controller.dart';
@ -238,12 +239,29 @@ class MeetingDetailsView extends GetView<MeetingDetailsController> {
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
children: [ children: [
const OverviewTab(), const OverviewTab(),
const SpeechTab(),
const SummaryTab(),
Obx( Obx(
() => controller.meetingDetails.value.summary.isNotEmpty () => controller.meetingDetails.value.tasktype == 1
? _meetingWait('正在转写...')
: const SpeechTab(),
),
Obx(
() => controller.meetingDetails.value.tasktype == 1 ||
controller.meetingDetails.value.tasktype == 2
? _meetingWait(
controller.meetingDetails.value.tasktype == 1
? '正在转写...'
: '正在总结...')
: const SummaryTab(),
),
Obx(
() => controller.meetingDetails.value.tasktype >= 3
? const MindMapTab() ? const MindMapTab()
: const SizedBox(), : controller.meetingDetails.value.tasktype == 0
? const SizedBox()
: _meetingWait(
controller.meetingDetails.value.tasktype == 1
? '正在转写...'
: '正在总结...'),
), ),
], ],
), ),
@ -253,6 +271,28 @@ class MeetingDetailsView extends GetView<MeetingDetailsController> {
); );
} }
Widget _meetingWait(String title) {
return Stack(
alignment: Alignment.topCenter,
children: [
Lottie.asset(
'assets/lottie/meeting_wait.json',
),
Positioned(
top: 320.w,
child: Text(
title,
style: TextStyle(
fontSize: 18.sp,
color: Colors.black87,
fontWeight: FontWeight.w500,
),
),
),
],
);
}
Widget _soundWave(bool isDarkMode) { Widget _soundWave(bool isDarkMode) {
return Obx( return Obx(
() => SizedBox( () => SizedBox(

6
lib/modules/meeting/views/speech_tab.dart

@ -249,7 +249,7 @@ class SpeechTab extends GetView<MeetingDetailsController> {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
if (controller.meetingDetails.value.tasktype == 1 && if (controller.meetingDetails.value.tasktype >= 2 &&
!controller.isSpeakerText.value) !controller.isSpeakerText.value)
_button( _button(
Icons.edit, Icons.edit,
@ -260,7 +260,7 @@ class SpeechTab extends GetView<MeetingDetailsController> {
controller.isTop.value = true; controller.isTop.value = true;
}, },
), ),
if (controller.meetingDetails.value.tasktype == 1 && if (controller.meetingDetails.value.tasktype >= 2 &&
!controller.isSpeakerText.value) !controller.isSpeakerText.value)
_button( _button(
Icons.supervisor_account, Icons.supervisor_account,
@ -278,7 +278,7 @@ class SpeechTab extends GetView<MeetingDetailsController> {
); );
}, },
), ),
if (controller.meetingDetails.value.tasktype != 1) if (controller.meetingDetails.value.tasktype == 0)
SizedBox( SizedBox(
width: 150.w, width: 150.w,
child: _button( child: _button(

4
lib/modules/meeting/views/summary_tab.dart

@ -293,7 +293,7 @@ class _SummaryTabState extends State<SummaryTab> {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
if (_controller.meetingDetails.value.summary.isNotEmpty) if (_controller.meetingDetails.value.tasktype >= 3)
_button( _button(
Icons.supervisor_account, Icons.supervisor_account,
'编辑发言者', '编辑发言者',
@ -310,7 +310,7 @@ class _SummaryTabState extends State<SummaryTab> {
); );
}, },
), ),
if (_controller.meetingDetails.value.summary.isEmpty) if (_controller.meetingDetails.value.tasktype == 0)
SizedBox( SizedBox(
width: 150.w, width: 150.w,
child: _button( child: _button(

Loading…
Cancel
Save