Explorar o código

fix(carotid): 修复自动内膜检测 #0008452

gavin.chen %!s(int64=2) %!d(string=hai) anos
pai
achega
bafc56a944

+ 1 - 0
lib/process/workspace/measure_3d_view_controller.dart

@@ -21,6 +21,7 @@ class Measure3DViewController implements IMeasure3DViewController {
   bool _exist3DData = false;
   bool _enable2DMeasure = false;
   bool isShell = ifCurEnvIsShell;
+  bool needAutoDetection = false;
 
   /// 模型切面标准宽度
   Size stdSize = const Size(599, 400);

+ 0 - 10
lib/view/3d_view/carotid_player.dart

@@ -77,16 +77,6 @@ class _CarotidPlayerState extends State<CarotidPlayer> {
       case MeasureMode.vidMode:
         break;
       case MeasureMode.carotid2DMode:
-        final itemMeta = ItemMeta(
-          MeasureTerms.IntimaDetection,
-          description: MeasureTerms.IntimaDetection,
-          measureType: MeasureTerms.IntimaDetection,
-          outputs: [
-            ItemOutputMeta(MeasureTerms.IntimaDetection, "", VidUsUnit.cm2),
-          ],
-        );
-        application.clearRecords();
-        application.switchItem(itemMeta);
         loadFrame(widget.measure3DViewController.image4Measure!);
         break;
       case MeasureMode.carotid3DMode:

+ 29 - 4
lib/view/3d_view/measure_3d_view.dart

@@ -1,12 +1,16 @@
 import 'dart:async';
 import 'package:fis_i18n/i18n.dart';
+import 'package:fis_measure/interfaces/process/items/item_metas.dart';
+import 'package:fis_measure/interfaces/process/items/terms.dart';
 import 'package:fis_measure/interfaces/process/player/play_controller.dart';
+import 'package:fis_measure/interfaces/process/workspace/application.dart';
 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:vid/us/vid_us_image.dart';
+import 'package:vid/us/vid_us_unit.dart';
 import 'package:webviewx/webviewx.dart';
 import 'dart:convert';
 import 'package:fis_measure/utils/js_utils.dart'
@@ -30,6 +34,7 @@ class Measure3DView extends StatefulWidget implements FWidget {
 class _Measure3DViewState extends State<Measure3DView> {
   late WebViewXController webviewController;
   final measure3DViewController = Get.find<Measure3DViewController>();
+  final application = Get.find<IApplication>();
   Size get screenSize => MediaQuery.of(context).size;
   String documentFromAsset = "<h2> Hello webviewX ! <h2>";
 
@@ -170,10 +175,14 @@ class _Measure3DViewState extends State<Measure3DView> {
   }
 
   /// AI 切割成功的回调
-  void _aiClipStateCallBack(bool res) async {
-    debugPrint("webview 触发 Dart_aiClipStateCallBack :$res");
-    // callShellMethod('aiClipStateCallBack', [res]);
-    measure3DViewController.resetTone();
+  void _aiClipStateCallBack(bool success) async {
+    // debugPrint("webview 触发 Dart_aiClipStateCallBack :$success");
+    print("webview 触发 Dart_aiClipStateCallBack :$success");
+    if (success) {
+      measure3DViewController.needAutoDetection = true;
+      // callShellMethod('aiClipStateCallBack', [res]);
+      measure3DViewController.resetTone();
+    }
   }
 
   ///[Carotid] ✅初始化 mesh 长宽高可以由两张小图计算得到,设置标准宽度用于缩放切面
@@ -213,6 +222,22 @@ class _Measure3DViewState extends State<Measure3DView> {
 
           measure3DViewController.image4Measure = vidUsImage;
           measure3DViewController.changeModeTo2DMeasure();
+          application.clearRecords();
+          if (measure3DViewController.needAutoDetection) {
+            Future.delayed(600.milliseconds, () {
+              final itemMeta = ItemMeta(
+                MeasureTerms.IntimaDetection,
+                description: MeasureTerms.IntimaDetection,
+                measureType: MeasureTerms.IntimaDetection,
+                outputs: [
+                  ItemOutputMeta(
+                      MeasureTerms.IntimaDetection, "", VidUsUnit.cm2),
+                ],
+              );
+              application.switchItem(itemMeta);
+            });
+            measure3DViewController.needAutoDetection = false;
+          }
         }
       ]);
     } catch (e) {