Browse Source

添加保存思维导图

newdev_shunjiawei
tanlongsheng 11 months ago
parent
commit
3c7bcb8d91
  1. 38
      lib/modules/meeting/controllers/mind_map_controller.dart
  2. 28
      lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart

38
lib/modules/meeting/controllers/mind_map_controller.dart

@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:image_gallery_saver_plus/image_gallery_saver_plus.dart';
import 'package:path_provider/path_provider.dart';
import 'package:share_plus/share_plus.dart';
import 'package:webview_flutter/webview_flutter.dart';
@ -19,6 +20,8 @@ class MindMapController extends GetxController {
final double _width = 1.sw - 25.w;
bool isWebViewReady = false;
int imageType = 1;
late final Worker _summaryNumberListener;
@override
@ -170,18 +173,29 @@ class MindMapController extends GetxController {
final String dataUrl = message.message;
final String base64Str = dataUrl.split(',').last;
final Uint8List bytes = base64.decode(base64Str);
final String fileName =
'${_meetingDetailsController.meetingData.value.title}_mindmap.png';
final tempDir = await getTemporaryDirectory();
final File file = File('${tempDir.path}/$fileName');
await file.writeAsBytes(bytes);
final result = await SharePlus.instance.share(ShareParams(
text: 'shareMindMap'.tr, //对应中文:分享思维导图
files: [XFile(file.path)],
));
if (result.status == ShareResultStatus.success) {
EasyLoading.showToast('shareSuccess'.tr); //对应中文:分享成功
if (imageType == 1) {
// 保存图片
final result = await ImageGallerySaverPlus.saveImage(
bytes,
quality: 100,
);
if (result['isSuccess']) {
EasyLoading.showToast('保存成功');
}
} else {
// 分享图片
final String fileName =
'${_meetingDetailsController.meetingData.value.title}_mindmap.png';
final tempDir = await getTemporaryDirectory();
final File file = File('${tempDir.path}/$fileName');
await file.writeAsBytes(bytes);
final result = await SharePlus.instance.share(ShareParams(
text: 'shareMindMap'.tr, //对应中文:分享思维导图
files: [XFile(file.path)],
));
if (result.status == ShareResultStatus.success) {
EasyLoading.showToast('shareSuccess'.tr); //对应中文:分享成功
}
}
}
}

28
lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart

@ -209,6 +209,33 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
);
}
: null),
_shareItem(
Icons.save_alt,
'保存思维导图',
onTap: _controller.meetingDetails.value.tasktype >= 3
? () {
Get.back();
final mindMapController =
Get.find<MindMapController>();
mindMapController.imageType = 1;
if (mindMapController.isWebViewReady) {
mindMapController.webViewController
.runJavaScript('captureImage()');
} else {
mindMapController.webViewController
.setNavigationDelegate(
NavigationDelegate(
onPageFinished: (String url) {
mindMapController.isWebViewReady = true;
mindMapController.webViewController
.runJavaScript('captureImage()');
},
),
);
}
}
: null,
),
_shareItem(
Icons.lan,
'shareMindMap'.tr, // 对应中文:分享思维导图
@ -218,6 +245,7 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
Get.back();
final mindMapController =
Get.find<MindMapController>();
mindMapController.imageType = 2;
if (mindMapController.isWebViewReady) {
mindMapController.webViewController
.runJavaScript('captureImage()');

Loading…
Cancel
Save