Browse Source

fix(carotid): 完成自动内膜检测 #0008452

gavin.chen 2 years ago
parent
commit
026395878a

+ 8 - 3
lib/process/calcuators/detection.dart

@@ -6,6 +6,7 @@ import 'package:fis_measure/process/primitives/detection.dart';
 import 'package:fis_measure/utils/js_utils.dart'
     if (dart.library.io) 'package:fis_measure/utils/js_utils4native.dart'
     if (dart.library.html) 'package:fis_measure/utils/js_utils.dart';
+import 'package:fis_measure/utils/prompt_box.dart';
 import 'package:vid/us/vid_us_unit.dart';
 
 import 'calculator.dart';
@@ -57,9 +58,10 @@ class CarotidDetectionCal extends Calculator<CarotidDetection, double> {
         [
           (result) {
             if (result == 'error') {
-              description = "$type failed";
-              updateStringValue(description);
-              ref.application.updateRenderReady.emit(this, null);
+              // description = "$type failed";
+              PromptBox.toast("$type failed");
+              // updateStringValue(description);
+              // ref.application.updateRenderReady.emit(this, null);
               return;
             }
             final feature = ref.feature!;
@@ -97,6 +99,7 @@ class CarotidDetectionCal extends Calculator<CarotidDetection, double> {
               }
             } else {
               description = "$type failed";
+              PromptBox.toast("$type failed");
             }
             updateStringValue(description);
 
@@ -107,6 +110,8 @@ class CarotidDetectionCal extends Calculator<CarotidDetection, double> {
       );
     } catch (e) {
       updateStringValue("$type failed");
+      PromptBox.toast("$type failed");
+
       //
     }
   }

+ 3 - 2
lib/process/workspace/measure_3d_view_controller.dart

@@ -37,7 +37,7 @@ class Measure3DViewController implements IMeasure3DViewController {
   ///vid 2D模式下进入3D测量模式
   void changeModeTo3DMode() {
     curMeasureMode = MeasureMode.carotid3DMode;
-    initParams();
+    // initParams();
     updatePlayerMode.emit(this, MeasureMode.carotid3DMode);
   }
 
@@ -49,7 +49,7 @@ class Measure3DViewController implements IMeasure3DViewController {
 
   /// 颈动脉2D、3D模式回到vid 2D测量模式
   void backToVidMode() {
-    initParams();
+    // initParams();
     resetTone();
     curMeasureMode = MeasureMode.vidMode;
     updatePlayerMode.emit(this, MeasureMode.vidMode);
@@ -90,6 +90,7 @@ class Measure3DViewController implements IMeasure3DViewController {
   /// 用户主动触发更换颈动脉图像
   var onChangeCarotid2DImage = FEventHandler<String>();
   void handleChangeCarotid2DImage(String recordId) {
+    initParams();
     onChangeCarotid2DImage.emit(this, recordId);
   }
 

+ 33 - 1
lib/view/3d_view/carotid_player.dart

@@ -1,14 +1,19 @@
 import 'dart:async';
 import 'dart:typed_data';
+import 'package:fis_measure/interfaces/process/items/types.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
+import 'package:fis_measure/interfaces/process/workspace/measure_3d_view_controller.dart';
 import 'package:fis_measure/process/workspace/measure_3d_view_controller.dart';
 import 'package:fis_measure/view/player/controller.dart';
 import 'package:fis_measure/view/vid_painter/carotid_vid_painter.dart';
 import 'package:flutter/material.dart' hide Image, decodeImageFromList;
 import 'package:get/get.dart';
 import 'package:vid/us/vid_us_image.dart';
+import 'package:vid/us/vid_us_unit.dart';
 import 'dart:ui';
 
+import '../../interfaces/process/items/item_metas.dart';
+
 class CarotidPlayer extends StatefulWidget {
   const CarotidPlayer(
     this.measure3DViewController, {
@@ -34,7 +39,6 @@ class _CarotidPlayerState extends State<CarotidPlayer> {
   @override
   void initState() {
     final stdSize = widget.measure3DViewController.stdSize;
-    // application.loadFrame(widget.measure3DViewController.image4Measure!);
     application.loadFrame(VidUsImage(1, stdSize.width.toInt(),
         stdSize.height.toInt(), Uint8List.fromList([0])));
     application.carotid2DSize = Size(
@@ -48,6 +52,8 @@ class _CarotidPlayerState extends State<CarotidPlayer> {
     }
     widget.measure3DViewController.onUpdateCarotid2DImage
         .addListener(_loadCarotidImageBytes);
+    widget.measure3DViewController.updatePlayerMode.addListener(_onModeChanged);
+
     loadFrame(widget.measure3DViewController.image4Measure!);
     super.initState();
   }
@@ -57,10 +63,36 @@ class _CarotidPlayerState extends State<CarotidPlayer> {
     application.isAdaptiveCarotid2D = false;
     widget.measure3DViewController.onUpdateCarotid2DImage
         .removeListener(_loadCarotidImageBytes);
+    widget.measure3DViewController.updatePlayerMode
+        .removeListener(_onModeChanged);
+
     image?.dispose();
     super.dispose();
   }
 
+  /// 模式改变触发更新
+  void _onModeChanged(Object s, MeasureMode mode) {
+    switch (mode) {
+      case MeasureMode.vidMode:
+        break;
+      case MeasureMode.carotid2DMode:
+        final itemMeta = ItemMeta(
+          MeasureTypes.IntimaDetection,
+          description: MeasureTypes.IntimaDetection,
+          measureType: MeasureTypes.IntimaDetection,
+          outputs: [
+            ItemOutputMeta(MeasureTypes.IntimaDetection, "", VidUsUnit.cm2),
+          ],
+        );
+        application.clearRecords();
+        application.switchItem(itemMeta);
+        loadFrame(widget.measure3DViewController.image4Measure!);
+        break;
+      case MeasureMode.carotid3DMode:
+        break;
+    }
+  }
+
   @override
   void didUpdateWidget(covariant CarotidPlayer oldWidget) {
     if (oldWidget.measure3DViewController != widget.measure3DViewController) {

+ 1 - 1
lib/view/measure/measure_main_view.dart

@@ -139,6 +139,7 @@ class _MeasureMainViewState extends State<MeasureMainView> {
   void _onModeChanged(Object s, MeasureMode mode) {
     switch (mode) {
       case MeasureMode.vidMode:
+        playerController.play();
         setState(() {
           ifShowProgressBar = true;
           enableCarotid2DMeasure = false;
@@ -149,7 +150,6 @@ class _MeasureMainViewState extends State<MeasureMainView> {
           ifShowProgressBar = false;
           enableCarotid2DMeasure = true;
         });
-        application.clearRecords();
         break;
       case MeasureMode.carotid3DMode:
         break;

+ 14 - 7
pubspec.lock

@@ -21,7 +21,7 @@ packages:
       name: asn1lib
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.1.0"
+    version: "1.1.1"
   async:
     dependency: transitive
     description:
@@ -185,8 +185,8 @@ packages:
     dependency: "direct main"
     description:
       path: "."
-      ref: "92fdd3c"
-      resolved-ref: "92fdd3c96f94215ef8649b6ab27167b9f6417692"
+      ref: "00a2e3c"
+      resolved-ref: "00a2e3caf2f42c9d2749514c352a07d970256797"
       url: "http://git.ius.plus/Project-Wing/fis_lib_ui.git"
     source: git
     version: "0.0.1"
@@ -293,6 +293,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "4.6.1"
+  getwidget:
+    dependency: transitive
+    description:
+      name: getwidget
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.1"
   http:
     dependency: transitive
     description:
@@ -446,7 +453,7 @@ packages:
       name: plugin_platform_interface
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.1.2"
+    version: "2.1.3"
   pointer_interceptor:
     dependency: transitive
     description:
@@ -460,7 +467,7 @@ packages:
       name: pointycastle
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "3.6.1"
+    version: "3.6.2"
   process:
     dependency: transitive
     description:
@@ -521,7 +528,7 @@ packages:
       name: synchronized
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "3.0.0+2"
+    version: "3.0.0+3"
   term_glyph:
     dependency: transitive
     description:
@@ -649,7 +656,7 @@ packages:
       name: webview_flutter_platform_interface
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.9.2"
+    version: "1.9.3"
   webview_flutter_wkwebview:
     dependency: transitive
     description: