Browse Source

会议助手增加等待动画

weicu
tanlongsheng 1 year ago
parent
commit
ca66495fb6
  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;
Map<String, Object?> data = {
'title': fileName,
'type': 'NOTE',
'type': 'IMPORT',
'seconds': seconds,
'filepath': filePath,
'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);
meetingData.value = MeetingModel.fromJson(data);
meetingDetails.value = MeetingDetailsModel.fromJson(data['details']);
if (meetingDetails.value.summary.isNotEmpty) {
if (meetingDetails.value.tasktype >= 3) {
dragOffset.value = 0;
isTop.value = true;
}
@ -129,7 +129,7 @@ class MeetingDetailsController extends GetxController
lottieController.stop();
}
});
if (meetingDetails.value.tasktype == 1) {
if (meetingDetails.value.tasktype >= 2) {
List speakerList = await SqfliteApi.getMeetingSpeaker(id);
textList.value = List.from(speakerList);
}
@ -177,8 +177,7 @@ class MeetingDetailsController extends GetxController
}
void summaryCreate() async {
EasyLoading.show();
if (meetingDetails.value.tasktype != 1) {
if (meetingDetails.value.tasktype == 0) {
await _audioSpeaker();
}
if (allText.isEmpty) {
@ -192,7 +191,6 @@ class MeetingDetailsController extends GetxController
allText = text;
}
await _aiServiceSummary();
EasyLoading.dismiss();
}
Future<void> _aiServiceSummary() async {
@ -202,12 +200,14 @@ class MeetingDetailsController extends GetxController
{'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.refresh();
}
Future<void> _audioSpeaker() async {
EasyLoading.show();
String audiourl = meetingData.value.audiourl;
if (audiourl.isEmpty) {
audiourl = await UploadOss.upload(
@ -219,9 +219,12 @@ class MeetingDetailsController extends GetxController
String taskId = meetingDetails.value.taskid;
if (taskId.isEmpty) {
taskId = await _submitTask(audiourl);
await SqfliteApi.editMeeting(id, {'tasktype': 1, 'taskid': taskId});
meetingDetails.value.taskid = taskId;
await SqfliteApi.editMeeting(id, {'taskid': taskId});
meetingDetails.value.tasktype = 1;
meetingDetails.refresh();
}
EasyLoading.dismiss();
await _fileRecognize(taskId);
}
@ -354,10 +357,10 @@ class MeetingDetailsController extends GetxController
}
var result = await SqfliteApi.insertMeetingSpeaker(list);
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);
textList.value = List.from(speakerList);
meetingDetails.value.tasktype = 1;
meetingDetails.value.tasktype = 2;
meetingDetails.value.personnel = personnel;
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_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:lottie/lottie.dart';
import '../../../core/theme/app_colors.dart';
import '../controllers/meeting_details_controller.dart';
@ -238,12 +239,29 @@ class MeetingDetailsView extends GetView<MeetingDetailsController> {
physics: const NeverScrollableScrollPhysics(),
children: [
const OverviewTab(),
const SpeechTab(),
const SummaryTab(),
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 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) {
return Obx(
() => SizedBox(

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

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

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

@ -293,7 +293,7 @@ class _SummaryTabState extends State<SummaryTab> {
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (_controller.meetingDetails.value.summary.isNotEmpty)
if (_controller.meetingDetails.value.tasktype >= 3)
_button(
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(
width: 150.w,
child: _button(

Loading…
Cancel
Save