Browse Source

优化导出思维导图

newdev_shunjiawei
tanlongsheng 1 year ago
parent
commit
91c0045136
  1. 19
      lib/modules/meeting/controllers/mind_map_controller.dart
  2. 18
      lib/modules/meeting/views/share_bottom_sheet.dart

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

@ -15,6 +15,8 @@ import 'meeting_details_controller.dart';
class MindMapController extends GetxController {
late final WebViewController webViewController;
final _meetingDetailsController = Get.find<MeetingDetailsController>();
final double _width = 1.sw - 25.w;
bool isWebViewReady = false;
@override
void onInit() {
@ -37,6 +39,8 @@ class MindMapController extends GetxController {
body {
width: 100%;
height: 100%;
min-width: ${_width}px;
min-height: ${_width}px;
margin: 0;
padding: 0;
overflow: hidden;
@ -63,8 +67,8 @@ class MindMapController extends GetxController {
justify-content: space-around;
align-items: center;
position: absolute;
top: 20px;
right: 20px;
top: 10px;
right: 2px;
}
.mind-map .mm-toolbar-item {
@ -104,9 +108,9 @@ class MindMapController extends GetxController {
const toolbarElement = document.getElementById('toolbar');
toolbarElement.append(el);
async function captureImage() {
window.captureImage = async function() {
const markmapElement = document.getElementById('markmap');
markmapElement.style.height = `${1.sw}px`;
markmapElement.style.height = `${_width}px`;
await mm.fit();
const options = {
scale: 2,
@ -127,6 +131,13 @@ class MindMapController extends GetxController {
''';
webViewController = WebViewController()
..setJavaScriptMode(JavaScriptMode.unrestricted)
..setNavigationDelegate(
NavigationDelegate(
onPageFinished: (String url) {
isWebViewReady = true;
},
),
)
..addJavaScriptChannel(
'ImageChannel',
onMessageReceived: _messageReceived,

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

@ -9,6 +9,7 @@ import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:path_provider/path_provider.dart';
import 'package:share_plus/share_plus.dart';
import 'package:webview_flutter/webview_flutter.dart';
import '../controllers/meeting_details_controller.dart';
import '../controllers/mind_map_controller.dart';
@ -150,8 +151,21 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
onTap: () {
Get.back();
final mindMapController = Get.find<MindMapController>();
mindMapController.webViewController
.runJavaScript('captureImage()');
if (mindMapController.isWebViewReady) {
mindMapController.webViewController
.runJavaScript('captureImage()');
} else {
mindMapController.webViewController
.setNavigationDelegate(
NavigationDelegate(
onPageFinished: (String url) {
mindMapController.isWebViewReady = true;
mindMapController.webViewController
.runJavaScript('captureImage()');
},
),
);
}
},
),
]),

Loading…
Cancel
Save