import 'dart:io'; import 'dart:typed_data'; import 'package:dsbridge_flutter/dsbridge_flutter.dart'; import 'package:electronic_assistant/base/base_controller.dart'; import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart'; import 'package:path_provider/path_provider.dart'; import 'js_api.dart'; class MindViewController extends BaseController { late final DWebViewController webViewController; @override void onInit() { super.onInit(); late final PlatformWebViewControllerCreationParams params; if (WebViewPlatform.instance is WebKitWebViewPlatform) { params = WebKitWebViewControllerCreationParams( allowsInlineMediaPlayback: true, mediaTypesRequiringUserAction: const {}, ); } else { params = const PlatformWebViewControllerCreationParams(); } webViewController = DWebViewController.fromPlatformCreationParams(params); webViewController.setJavaScriptMode(JavaScriptMode.unrestricted); webViewController.enableZoom(false); webViewController.loadRequest(Uri.parse('http://192.168.10.144:9528')); Future.delayed(const Duration(seconds: 3), () { webViewController.callHandler(JsMindApi.functionToJsExport, args: ['test'], handler: (value) { saveToFile(value); }); }); } Future saveToFile(dynamic data) async { Uint8List? bytes = convertMapToUint8List(data); if (bytes == null) { return; } final directory = await getApplicationDocumentsDirectory(); final file = File('${directory.path}/output_file.png'); await file.writeAsBytes(bytes); } Uint8List? convertMapToUint8List(dynamic map) { if (map is Map) { final value = map.values.toList().cast(); return Uint8List.fromList(value); } return null; } @override void onReady() { super.onReady(); } }