|
@@ -1,7 +1,11 @@
|
|
|
+import 'dart:async';
|
|
|
import 'dart:convert';
|
|
|
+import 'dart:html';
|
|
|
import 'dart:math';
|
|
|
+import 'dart:typed_data';
|
|
|
+import 'dart:ui';
|
|
|
|
|
|
-import 'package:flutter/material.dart';
|
|
|
+import 'package:flutter/material.dart' hide Image;
|
|
|
import 'package:flutter/services.dart';
|
|
|
import 'package:webview_demo/utils/helper.dart';
|
|
|
import 'package:webviewx/webviewx.dart';
|
|
@@ -66,6 +70,16 @@ class _WebViewXPageState extends State<WebViewXPage> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ String _loadRandomImage(int width, int height) {
|
|
|
+ CanvasElement canvas = CanvasElement(width: width, height: height);
|
|
|
+ var ctx = canvas.context2D
|
|
|
+ ..fillStyle =
|
|
|
+ "rgb(${Random().nextInt(255)},${Random().nextInt(255)},${Random().nextInt(255)})"
|
|
|
+ ..fillRect(0, 0, width, height);
|
|
|
+ var dataUrl = canvas.toDataUrl("image/jpeg", 0.95);
|
|
|
+ return dataUrl;
|
|
|
+ }
|
|
|
+
|
|
|
@override
|
|
|
void dispose() {
|
|
|
webviewController.dispose();
|
|
@@ -154,6 +168,9 @@ class _WebViewXPageState extends State<WebViewXPage> {
|
|
|
callBack: (msg) {
|
|
|
final data = jsonDecode(msg);
|
|
|
|
|
|
+ ///random color
|
|
|
+ final imageData = _loadRandomImage(300, 300);
|
|
|
+
|
|
|
/// result 需要传入 WorldPoints 列表(切面端点的三维坐标)、ImagePoints 列表(切面端点的二维坐标)、ImageData 图像路径(Base64)
|
|
|
final result = {
|
|
|
"ErrorCode": 1000,
|
|
@@ -164,7 +181,7 @@ class _WebViewXPageState extends State<WebViewXPage> {
|
|
|
{"X": 1.0, "Y": 0.0},
|
|
|
{"X": 0.0, "Y": 0.0}
|
|
|
],
|
|
|
- "ImageData": "filepath?"
|
|
|
+ "ImageData": imageData
|
|
|
};
|
|
|
return jsonEncode(result);
|
|
|
},
|
|
@@ -248,6 +265,11 @@ class _WebViewXPageState extends State<WebViewXPage> {
|
|
|
text: '4. 执行 mdlFileLoaded("Carotid","True") (iframe 中)',
|
|
|
onTap: _mdlFileLoaded,
|
|
|
),
|
|
|
+ buildSpace(direction: Axis.vertical, flex: false, amount: 20.0),
|
|
|
+ createButton(
|
|
|
+ text: '切换模型 changeSurface (iframe 中)',
|
|
|
+ onTap: _changeSurface,
|
|
|
+ ),
|
|
|
];
|
|
|
}
|
|
|
|
|
@@ -274,6 +296,27 @@ class _WebViewXPageState extends State<WebViewXPage> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ Future<void> _changeSurface() async {
|
|
|
+ final faceImages = [
|
|
|
+ _loadRandomImage(2, 2),
|
|
|
+ _loadRandomImage(2, 2),
|
|
|
+ _loadRandomImage(2, 2),
|
|
|
+ _loadRandomImage(2, 2),
|
|
|
+ _loadRandomImage(2, 2),
|
|
|
+ _loadRandomImage(2, 2),
|
|
|
+ ];
|
|
|
+ // print([759, 596, 397, ...faceImages]);
|
|
|
+ try {
|
|
|
+ await webviewController
|
|
|
+ .callJsMethod('changeSurface', [759, 596, 397, ...faceImages]);
|
|
|
+ } catch (e) {
|
|
|
+ showAlertDialog(
|
|
|
+ executeJsErrorMessage,
|
|
|
+ context,
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
Future<void> _mdlFileLoaded() async {
|
|
|
try {
|
|
|
await webviewController
|