Browse Source

会议助手增加分享

weicu
tanlongsheng 1 year ago
parent
commit
b394fa6c61
  1. 86
      lib/modules/meeting/views/share_bottom_sheet.dart

86
lib/modules/meeting/views/share_bottom_sheet.dart

@ -1,7 +1,12 @@
import 'dart:io';
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:path_provider/path_provider.dart';
import 'package:share_plus/share_plus.dart';
import '../controllers/meeting_details_controller.dart';
@ -69,18 +74,44 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
_shareItem(Icons.link, '分享链接', isBorder: false),
]),
_box([
_shareItem(Icons.copy, '复制转写'),
_shareItem(Icons.copy, '复制总结', isBorder: false),
_shareItem(Icons.copy, '复制转写', onTap: () {
Get.back();
_copy(_getAllText());
}),
_shareItem(Icons.copy, '复制总结', isBorder: false, onTap: () {
Get.back();
_copy(_controller.meetingDetails.value.summary);
}),
]),
_box([
_shareItem(Icons.multitrack_audio, '导出音频', onTap: () {
Get.back();
_share(_controller.meetingData.value.filepath, '分享会议音频');
}),
_shareItem(Icons.message, '导出转写', onTap: () async {
final tempDir = await getTemporaryDirectory();
final file = File(
'${tempDir.path}/${_controller.meetingData.value.title} speaker.txt');
String allText = _getAllText();
await file.writeAsString(allText);
Get.back();
_share(file.path, '分享会议转写');
}),
_shareItem(Icons.article, '导出总结', onTap: () async {
final tempDir = await getTemporaryDirectory();
final file = File(
'${tempDir.path}/${_controller.meetingData.value.title} summary.txt');
await file.writeAsString(
_controller.meetingDetails.value.summary);
Get.back();
_share(file.path, '分享会议总结');
}),
_shareItem(
Icons.multitrack_audio,
'导出音频',
onTap: shareAllTranslatAudio,
Icons.lan,
'导出思维导图',
isBorder: false,
onTap: () {},
),
_shareItem(Icons.message, '导出转写'),
_shareItem(Icons.article, '导出总结'),
_shareItem(Icons.lan, '导出思维导图', isBorder: false),
]),
],
),
@ -144,17 +175,42 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
);
}
void shareAllTranslatAudio() async {
if (_controller.meetingData.value.filepath.isEmpty) {
EasyLoading.showToast('没有可分享的音频文件');
return;
}
void _share(String filepath, String title) async {
final result = await SharePlus.instance.share(ShareParams(
text: '分享会议音频',
files: [XFile(_controller.meetingData.value.filepath)],
text: title,
files: [XFile(filepath)],
));
if (result.status == ShareResultStatus.success) {
EasyLoading.showToast('分享完成!');
}
}
void _copy(String text) {
Clipboard.setData(ClipboardData(
text: text,
)).then(
(value) => Get.snackbar(
'success'.tr, // 成功
'复制成功',
backgroundColor: Colors.blue.withOpacity(0.8),
colorText: Colors.white,
),
);
}
String _getAllText() {
String text = '';
for (var element in _controller.textList) {
if (element['speaker'].isNotEmpty) {
text += '${element['speaker']} ';
}
text += '${DateUtil.formatDateMs(
element['starttime'],
format: 'HH:mm:ss',
isUtc: true,
)}\n';
text += '${element['content']}\n';
}
return text;
}
}

Loading…
Cancel
Save