|
@@ -2,10 +2,12 @@ import 'dart:async';
|
|
|
import 'dart:convert';
|
|
|
import 'dart:html' hide VoidCallback;
|
|
|
import 'dart:math';
|
|
|
-
|
|
|
+import 'dart:ui' as ui;
|
|
|
+import 'package:fis_measure/process/workspace/measure_3d_view_controller.dart';
|
|
|
import 'package:fis_ui/index.dart';
|
|
|
import 'package:flutter/material.dart' hide Image;
|
|
|
import 'package:flutter/services.dart';
|
|
|
+import 'package:get/get.dart';
|
|
|
import 'package:webviewx/webviewx.dart';
|
|
|
|
|
|
/// [Carotid] webview下 initPage 方法需要 i18n 由 dart 触发
|
|
@@ -23,6 +25,8 @@ class Measure3DView extends StatefulWidget implements FWidget {
|
|
|
|
|
|
class _Measure3DViewState extends State<Measure3DView> {
|
|
|
late WebViewXController webviewController;
|
|
|
+ final measure3DViewController = Get.find<Measure3DViewController>();
|
|
|
+
|
|
|
final executeJsErrorMessage = '脚本执行失败,请检查代码是否正确嵌入';
|
|
|
Size get screenSize => MediaQuery.of(context).size;
|
|
|
String documentFromAsset = "<h2> Hello webviewX ! <h2>";
|
|
@@ -222,38 +226,63 @@ class _Measure3DViewState extends State<Measure3DView> {
|
|
|
];
|
|
|
}
|
|
|
|
|
|
+ ///初始化 mesh
|
|
|
Future<void> _setSurface() async {
|
|
|
- try {
|
|
|
- await webviewController
|
|
|
- .callJsMethod('setSurface', [759, 596, 397, "../3DWeb/FaceImage"]);
|
|
|
- } catch (e) {
|
|
|
- debugPrint(executeJsErrorMessage);
|
|
|
+ /// [Carotid] ✅长宽高可以由两张小图计算得到
|
|
|
+ final faceImages = measure3DViewController.carotidResult.surfaceImageList;
|
|
|
+ if (faceImages!.length == 6) {
|
|
|
+ final first = await loadImageSize(faceImages[0]);
|
|
|
+ final last = await loadImageSize(faceImages[5]);
|
|
|
+ final width = (last.width - 1).toInt();
|
|
|
+ final height = (last.height - 1).toInt();
|
|
|
+ final depth = (first.height - 1).toInt();
|
|
|
+ try {
|
|
|
+ await webviewController.callJsMethod(
|
|
|
+ 'changeSurface', [width, height, depth, ...faceImages]);
|
|
|
+ } catch (e) {
|
|
|
+ debugPrint(executeJsErrorMessage);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Future<void> _changeSurface() async {
|
|
|
- /// [Carotid] faceImage 由 webviewController 提供
|
|
|
- /// 长宽高可以 shell 计算
|
|
|
- final faceImages = [
|
|
|
- _loadRandomImage(100, 100),
|
|
|
- _loadRandomImage(100, 100),
|
|
|
- _loadRandomImage(100, 100),
|
|
|
- _loadRandomImage(100, 100),
|
|
|
- _loadRandomImage(100, 100),
|
|
|
- _loadRandomImage(100, 100),
|
|
|
- ];
|
|
|
- // final faceList = faceImages.map((image) {
|
|
|
- // return "data:image/jpeg;base64," + image;
|
|
|
- // }).toList();
|
|
|
- // print([759, 596, 397, ...faceImages]);
|
|
|
- try {
|
|
|
- await webviewController
|
|
|
- .callJsMethod('changeSurface', [759, 596, 397, ...faceImages]);
|
|
|
- } catch (e) {
|
|
|
- debugPrint(executeJsErrorMessage);
|
|
|
+ /// [Carotid] faceImage 由 measure3DViewController 提供
|
|
|
+ final faceImages = measure3DViewController.carotidResult.surfaceImageList;
|
|
|
+ if (faceImages!.length == 6) {
|
|
|
+ final first = await loadImageSize(faceImages[0]);
|
|
|
+ final last = await loadImageSize(faceImages[5]);
|
|
|
+ final width = (last.width - 1).toInt();
|
|
|
+ final height = (last.height - 1).toInt();
|
|
|
+ final depth = (first.height - 1).toInt();
|
|
|
+ try {
|
|
|
+ await webviewController.callJsMethod(
|
|
|
+ 'changeSurface', [width, height, depth, ...faceImages]);
|
|
|
+ } catch (e) {
|
|
|
+ debugPrint(executeJsErrorMessage);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ Future<Size> loadImageSize(String url) async {
|
|
|
+ ui.Image image = await getImage(url);
|
|
|
+ final width = image.width;
|
|
|
+ final height = image.height;
|
|
|
+ image.dispose();
|
|
|
+ return Size(width.toDouble(), height.toDouble());
|
|
|
+ }
|
|
|
+
|
|
|
+ Future<ui.Image> getImage(String path) async {
|
|
|
+ var completer = Completer<ImageInfo>();
|
|
|
+ var img = NetworkImage(path);
|
|
|
+ img
|
|
|
+ .resolve(const ImageConfiguration())
|
|
|
+ .addListener(ImageStreamListener((info, _) {
|
|
|
+ completer.complete(info);
|
|
|
+ }));
|
|
|
+ ImageInfo imageInfo = await completer.future;
|
|
|
+ return imageInfo.image;
|
|
|
+ }
|
|
|
+
|
|
|
Future<void> _mdlFileLoaded() async {
|
|
|
try {
|
|
|
await webviewController
|