Browse Source

Merge branch 'new_dev' of https://github.com/deepcloud2048/deep_voice into new_dev

weicu
liwei1dao 1 year ago
parent
commit
61550b6d15
  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/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyloading/flutter_easyloading.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:path_provider/path_provider.dart';
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
import '../controllers/meeting_details_controller.dart'; import '../controllers/meeting_details_controller.dart';
@ -69,18 +74,44 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
_shareItem(Icons.link, '分享链接', isBorder: false), _shareItem(Icons.link, '分享链接', isBorder: false),
]), ]),
_box([ _box([
_shareItem(Icons.copy, '复制转写'), _shareItem(Icons.copy, '复制转写', onTap: () {
_shareItem(Icons.copy, '复制总结', isBorder: false), Get.back();
_copy(_getAllText());
}),
_shareItem(Icons.copy, '复制总结', isBorder: false, onTap: () {
Get.back();
_copy(_controller.meetingDetails.value.summary);
}),
]), ]),
_box([ _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( _shareItem(
Icons.multitrack_audio, Icons.lan,
'导出音频', '导出思维导图',
onTap: shareAllTranslatAudio, 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 { void _share(String filepath, String title) async {
if (_controller.meetingData.value.filepath.isEmpty) {
EasyLoading.showToast('没有可分享的音频文件');
return;
}
final result = await SharePlus.instance.share(ShareParams( final result = await SharePlus.instance.share(ShareParams(
text: '分享会议音频', text: title,
files: [XFile(_controller.meetingData.value.filepath)], files: [XFile(filepath)],
)); ));
if (result.status == ShareResultStatus.success) { if (result.status == ShareResultStatus.success) {
EasyLoading.showToast('分享完成!'); 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