|
|
|
@ -7,6 +7,7 @@ import 'package:flutter_easyloading/flutter_easyloading.dart'; |
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|
|
|
import 'package:get/get.dart'; |
|
|
|
import 'package:get_storage/get_storage.dart'; |
|
|
|
import 'package:htmltopdfwidgets/htmltopdfwidgets.dart' as pdf; |
|
|
|
import 'package:path_provider/path_provider.dart'; |
|
|
|
import 'package:share_plus/share_plus.dart'; |
|
|
|
import 'package:webview_flutter/webview_flutter.dart'; |
|
|
|
@ -158,6 +159,7 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> { |
|
|
|
'导出为', |
|
|
|
(int index) async { |
|
|
|
if (index == 0) { |
|
|
|
// 导出TXT |
|
|
|
final tempDir = |
|
|
|
await getTemporaryDirectory(); |
|
|
|
final file = File( |
|
|
|
@ -165,7 +167,10 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> { |
|
|
|
await file.writeAsString(_controller |
|
|
|
.meetingDetails.value.summary); |
|
|
|
_share(file.path, '分享会议总结'); |
|
|
|
} else {} |
|
|
|
} else { |
|
|
|
// 导出PDF |
|
|
|
_exportMarkdownPdf(); |
|
|
|
} |
|
|
|
}, |
|
|
|
const [ |
|
|
|
{ |
|
|
|
@ -286,7 +291,7 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> { |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
void _share(String filepath, String title) async { |
|
|
|
Future<void> _share(String filepath, String title) async { |
|
|
|
final result = await SharePlus.instance.share(ShareParams( |
|
|
|
text: title, |
|
|
|
files: [XFile(filepath)], |
|
|
|
@ -332,4 +337,26 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> { |
|
|
|
await file.writeAsBytes(byteData.buffer.asUint8List()); |
|
|
|
return XFile(file.path); |
|
|
|
} |
|
|
|
|
|
|
|
Future<void> _exportMarkdownPdf() async { |
|
|
|
EasyLoading.show(status: '正在导出PDF...'); |
|
|
|
final tempDir = await getTemporaryDirectory(); |
|
|
|
final file = File( |
|
|
|
'${tempDir.path}/${_controller.meetingData.value.title}_summary.pdf'); |
|
|
|
final List<pdf.Widget> markdownWidgets = |
|
|
|
await pdf.HTMLToPdf().convertMarkdown( |
|
|
|
_controller.meetingDetails.value.summary, |
|
|
|
fontFallback: [ |
|
|
|
pdf.Font.ttf( |
|
|
|
await rootBundle.load('assets/fonts/NotoSansSC-Regular.ttf')), |
|
|
|
], |
|
|
|
); |
|
|
|
final markdownPdf = pdf.Document(); |
|
|
|
markdownPdf.addPage(pdf.MultiPage( |
|
|
|
build: (context) => markdownWidgets, |
|
|
|
)); |
|
|
|
await file.writeAsBytes(await markdownPdf.save()); |
|
|
|
await _share(file.path, '分享会议总结'); |
|
|
|
EasyLoading.dismiss(); |
|
|
|
} |
|
|
|
} |
|
|
|
|