|
|
|
@ -11,6 +11,7 @@ import 'package:path_provider/path_provider.dart'; |
|
|
|
import 'package:share_plus/share_plus.dart'; |
|
|
|
import 'package:webview_flutter/webview_flutter.dart'; |
|
|
|
|
|
|
|
import '../../../core/utils/synchrodata.dart'; |
|
|
|
import '../controllers/meeting_details_controller.dart'; |
|
|
|
import '../controllers/mind_map_controller.dart'; |
|
|
|
|
|
|
|
@ -80,6 +81,7 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> { |
|
|
|
isBorder: false, |
|
|
|
onTap: () async { |
|
|
|
Get.back(); |
|
|
|
Synchrodata.uploadOperationRecords(); |
|
|
|
final GetStorage storage = GetStorage(); |
|
|
|
String token = storage.read("logintoken") ?? ''; |
|
|
|
String userId = ''; |
|
|
|
@ -112,61 +114,77 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> { |
|
|
|
), |
|
|
|
]), |
|
|
|
_box([ |
|
|
|
_shareItem(Icons.copy, '复制转写', onTap: () { |
|
|
|
Get.back(); |
|
|
|
_copy(_getAllText()); |
|
|
|
}), |
|
|
|
_shareItem(Icons.copy, '复制总结', isBorder: false, onTap: () { |
|
|
|
Get.back(); |
|
|
|
_copy(_controller.meetingDetails.value.summary); |
|
|
|
}), |
|
|
|
_shareItem(Icons.copy, '复制转写', |
|
|
|
onTap: _controller.meetingDetails.value.tasktype >= 2 |
|
|
|
? () { |
|
|
|
Get.back(); |
|
|
|
_copy(_getAllText()); |
|
|
|
} |
|
|
|
: null), |
|
|
|
_shareItem(Icons.copy, '复制总结', |
|
|
|
isBorder: false, |
|
|
|
onTap: _controller.meetingDetails.value.tasktype >= 3 |
|
|
|
? () { |
|
|
|
Get.back(); |
|
|
|
_copy(_controller.meetingDetails.value.summary); |
|
|
|
} |
|
|
|
: null), |
|
|
|
]), |
|
|
|
_box([ |
|
|
|
_shareItem(Icons.multitrack_audio, '导出音频', onTap: () { |
|
|
|
Get.back(); |
|
|
|
_share(_controller.meetingData.value.filepath, '分享会议音频'); |
|
|
|
}), |
|
|
|
_shareItem(Icons.message, '导出转写', onTap: () async { |
|
|
|
Get.back(); |
|
|
|
final tempDir = await getTemporaryDirectory(); |
|
|
|
final file = File( |
|
|
|
'${tempDir.path}/${_controller.meetingData.value.title} speaker.txt'); |
|
|
|
String allText = _getAllText(); |
|
|
|
await file.writeAsString(allText); |
|
|
|
_share(file.path, '分享会议转写'); |
|
|
|
}), |
|
|
|
_shareItem(Icons.article, '导出总结', onTap: () async { |
|
|
|
Get.back(); |
|
|
|
final tempDir = await getTemporaryDirectory(); |
|
|
|
final file = File( |
|
|
|
'${tempDir.path}/${_controller.meetingData.value.title} summary.txt'); |
|
|
|
await file.writeAsString( |
|
|
|
_controller.meetingDetails.value.summary); |
|
|
|
_share(file.path, '分享会议总结'); |
|
|
|
}), |
|
|
|
_shareItem(Icons.message, '导出转写', |
|
|
|
onTap: _controller.meetingDetails.value.tasktype >= 2 |
|
|
|
? () async { |
|
|
|
Get.back(); |
|
|
|
final tempDir = await getTemporaryDirectory(); |
|
|
|
final file = File( |
|
|
|
'${tempDir.path}/${_controller.meetingData.value.title} speaker.txt'); |
|
|
|
String allText = _getAllText(); |
|
|
|
await file.writeAsString(allText); |
|
|
|
_share(file.path, '分享会议转写'); |
|
|
|
} |
|
|
|
: null), |
|
|
|
_shareItem(Icons.article, '导出总结', |
|
|
|
onTap: _controller.meetingDetails.value.tasktype >= 3 |
|
|
|
? () async { |
|
|
|
Get.back(); |
|
|
|
final tempDir = await getTemporaryDirectory(); |
|
|
|
final file = File( |
|
|
|
'${tempDir.path}/${_controller.meetingData.value.title} summary.txt'); |
|
|
|
await file.writeAsString( |
|
|
|
_controller.meetingDetails.value.summary); |
|
|
|
_share(file.path, '分享会议总结'); |
|
|
|
} |
|
|
|
: null), |
|
|
|
_shareItem( |
|
|
|
Icons.lan, |
|
|
|
'导出思维导图', |
|
|
|
isBorder: false, |
|
|
|
onTap: () { |
|
|
|
Get.back(); |
|
|
|
final mindMapController = Get.find<MindMapController>(); |
|
|
|
if (mindMapController.isWebViewReady) { |
|
|
|
mindMapController.webViewController |
|
|
|
.runJavaScript('captureImage()'); |
|
|
|
} else { |
|
|
|
mindMapController.webViewController |
|
|
|
.setNavigationDelegate( |
|
|
|
NavigationDelegate( |
|
|
|
onPageFinished: (String url) { |
|
|
|
mindMapController.isWebViewReady = true; |
|
|
|
onTap: _controller.meetingDetails.value.tasktype >= 3 |
|
|
|
? () { |
|
|
|
Get.back(); |
|
|
|
final mindMapController = |
|
|
|
Get.find<MindMapController>(); |
|
|
|
if (mindMapController.isWebViewReady) { |
|
|
|
mindMapController.webViewController |
|
|
|
.runJavaScript('captureImage()'); |
|
|
|
}, |
|
|
|
), |
|
|
|
); |
|
|
|
} |
|
|
|
}, |
|
|
|
} else { |
|
|
|
mindMapController.webViewController |
|
|
|
.setNavigationDelegate( |
|
|
|
NavigationDelegate( |
|
|
|
onPageFinished: (String url) { |
|
|
|
mindMapController.isWebViewReady = true; |
|
|
|
mindMapController.webViewController |
|
|
|
.runJavaScript('captureImage()'); |
|
|
|
}, |
|
|
|
), |
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
|
: null, |
|
|
|
), |
|
|
|
]), |
|
|
|
], |
|
|
|
@ -180,6 +198,7 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> { |
|
|
|
Widget _box(List<Widget> children) { |
|
|
|
return Container( |
|
|
|
margin: EdgeInsets.only(bottom: 10.w), |
|
|
|
clipBehavior: Clip.hardEdge, |
|
|
|
decoration: BoxDecoration( |
|
|
|
color: Colors.white, |
|
|
|
borderRadius: BorderRadius.circular(12.r), |
|
|
|
@ -201,6 +220,7 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> { |
|
|
|
child: Container( |
|
|
|
padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 15.w), |
|
|
|
decoration: BoxDecoration( |
|
|
|
color: onTap != null ? null : Colors.grey[200], |
|
|
|
border: isBorder |
|
|
|
? Border( |
|
|
|
bottom: BorderSide( |
|
|
|
|