Jelajahi Sumber

1、新增注释入口

bakamaka.guan 2 tahun lalu
induk
melakukan
2055193b25

+ 28 - 3
lib/process/workspace/measure_handler.dart

@@ -1,6 +1,7 @@
 import 'dart:core';
 
 import 'package:fis_common/event/event_type.dart';
+import 'package:fis_measure/view/measure/tool_chest_title.dart';
 
 class ChangeImageInfo {
   /// 图片地址
@@ -34,16 +35,23 @@ abstract class IMeasureHandler {
   /// 测量切换图片事件
   late FEventHandler<ChangeImageInfo> onImageChanged;
 
+  /// 测量方式选择
+  late FEventHandler<MeasureModeSelection> onMeasureModeSelectionChanged;
+
+  /// 测量还是注释tab
+  late FEventHandler<TagEnum> onChangedTab;
+
   /// 切换图像传递数据
   ChangeImageInfo get imageChanged;
   set imageChanged(ChangeImageInfo value);
 
-  /// 测量方式选择
-  late FEventHandler<MeasureModeSelection> onMeasureModeSelectionChanged;
-
   /// 切换图像测量方式变更数据
   MeasureModeSelection get measureModeChanged;
   set measureModeChanged(MeasureModeSelection value);
+
+  /// 切换Tab
+  TagEnum get changedTab;
+  set changedTab(TagEnum value);
 }
 
 class MeasureHandler implements IMeasureHandler {
@@ -51,11 +59,14 @@ class MeasureHandler implements IMeasureHandler {
   MeasureModeSelection _measureModeChanged =
       MeasureModeSelection(null, null, null);
 
+  TagEnum _changedTab = TagEnum.MeasureTool;
   @override
   var onImageChanged = FEventHandler<ChangeImageInfo>();
 
   @override
   var onMeasureModeSelectionChanged = FEventHandler<MeasureModeSelection>();
+  @override
+  var onChangedTab = FEventHandler<TagEnum>();
 
   @override
   ChangeImageInfo get imageChanged => _imageChanged;
@@ -63,6 +74,16 @@ class MeasureHandler implements IMeasureHandler {
   @override
   MeasureModeSelection get measureModeChanged => _measureModeChanged;
 
+  @override
+  TagEnum get changedTab => _changedTab;
+  @override
+  set changedTab(TagEnum value) {
+    if (value != _changedTab) {
+      _changedTab = value;
+      _onChangedTab();
+    }
+  }
+
   @override
   set imageChanged(ChangeImageInfo value) {
     if (value != _imageChanged) {
@@ -86,4 +107,8 @@ class MeasureHandler implements IMeasureHandler {
   void _onMeasureModeSelectionChanged() {
     onMeasureModeSelectionChanged.emit(this, measureModeChanged);
   }
+
+  void _onChangedTab() {
+    onChangedTab.emit(this, changedTab);
+  }
 }

+ 41 - 8
lib/view/measure/measure_view.dart

@@ -2,6 +2,7 @@ import 'package:fis_jsonrpc/rpc.dart';
 import 'package:fis_measure/interfaces/process/workspace/exam_info.dart';
 import 'package:fis_measure/process/workspace/measure_controller.dart';
 import 'package:fis_measure/process/workspace/measure_data_controller.dart';
+import 'package:fis_measure/process/workspace/measure_handler.dart';
 import 'package:fis_measure/view/measure/measure_images_bar.dart';
 import 'package:fis_measure/view/measure/measure_player.dart';
 import 'package:fis_measure/view/measure/measure_tool.dart';
@@ -106,7 +107,7 @@ class _MeasureMainPageState extends State<MeasureMainPage> {
               children: [
                 FExpanded(
                   child: MeasureRightBoard(
-                    key: UniqueKey(),
+                    key: ValueKey(measureData.itemCurrentImage),
                   ),
                 ),
                 const MeasureImagesBar(),
@@ -127,7 +128,30 @@ class _MeasureMainPageState extends State<MeasureMainPage> {
 }
 
 /// 测量左边操作页面
-class _MeasureLeftBoard extends FStatelessWidget {
+class _MeasureLeftBoard extends StatefulWidget implements FWidget {
+  @override
+  State<_MeasureLeftBoard> createState() => _MeasureLeftBoardState();
+}
+
+class _MeasureLeftBoardState extends State<_MeasureLeftBoard> {
+  final measureHandler = Get.find<MeasureHandler>();
+
+  bool get isMeasureTool => measureHandler.changedTab == TagEnum.MeasureTool;
+
+  void onChangedTab(
+    Object sender,
+    TagEnum? e,
+  ) {
+    print(e);
+    setState(() {});
+  }
+
+  @override
+  void initState() {
+    measureHandler.onChangedTab.addListener(onChangedTab);
+    super.initState();
+  }
+
   @override
   FWidget build(BuildContext context) {
     return FColumn(
@@ -135,13 +159,22 @@ class _MeasureLeftBoard extends FStatelessWidget {
       crossAxisAlignment: CrossAxisAlignment.start,
       children: [
         const LeftSiderHold(),
-        FExpanded(
-          child: FContainer(
-            width: 300,
-            key: UniqueKey(),
-            child: const LeftSiderSelectMeasure(),
+        if (!isMeasureTool)
+          FExpanded(
+            child: FContainer(
+              width: 300,
+              key: UniqueKey(),
+              color: Colors.amberAccent,
+            ),
+          )
+        else
+          FExpanded(
+            child: FContainer(
+              width: 300,
+              key: UniqueKey(),
+              child: const LeftSiderSelectMeasure(),
+            ),
           ),
-        ),
       ],
     );
   }

+ 12 - 4
lib/view/measure/tool_chest_title.dart

@@ -1,7 +1,9 @@
 import 'package:fis_i18n/i18n.dart';
+import 'package:fis_measure/process/workspace/measure_handler.dart';
 import 'package:fis_theme/theme.dart';
 import 'package:fis_ui/index.dart';
 import 'package:flutter/material.dart';
+import 'package:get/get.dart';
 
 /// 下拉选择的类
 class MeasureSelectModel {
@@ -10,6 +12,11 @@ class MeasureSelectModel {
   final String code;
 }
 
+enum TagEnum {
+  MeasureTool,
+  NodesTool,
+}
+
 /// 工具箱 样式配置之类
 class LeftSiderHold extends StatelessWidget implements FWidget {
   const LeftSiderHold({Key? key}) : super(key: key);
@@ -89,24 +96,25 @@ class _LeftSiderHoldAllStyleConfig extends StatelessWidget implements FWidget {
 
 /// 测量工具 注释工具Tab
 class _LeftSiderTabBar extends StatelessWidget implements FWidget {
+  final measureHandler = Get.find<MeasureHandler>();
   @override
   FWidget build(BuildContext context) {
     return FRow(
       mainAxisAlignment: MainAxisAlignment.spaceBetween,
       children: [
         _buildTab(
-          0,
+          TagEnum.MeasureTool,
           i18nBook.measure.measureTool.t,
         ),
         _buildTab(
-          1,
+          TagEnum.NodesTool,
           i18nBook.measure.annotationTool.t,
         ),
       ],
     );
   }
 
-  FWidget _buildTab(int index, String title) {
+  FWidget _buildTab(TagEnum tag, String title) {
     return FTextButton(
       style: ButtonStyle(
         padding: MaterialStateProperty.all(
@@ -116,7 +124,7 @@ class _LeftSiderTabBar extends StatelessWidget implements FWidget {
         ),
       ),
       onPressed: () {
-        print('object');
+        measureHandler.changedTab = tag;
       },
       child: FText(
         title,

+ 22 - 25
lib/view/paint/ai_patint.dart

@@ -39,9 +39,6 @@ class _AIPaintInfoState extends State<AIPaintInfo> {
   /// ai结果
   late final List<AIDiagnosisPerImageDTO> aiResult = [];
 
-  /// ai json 数据
-  String? aiResults;
-
   /// 测量AI数据
   final measureData = Get.find<MeasureDataController>();
 
@@ -51,6 +48,9 @@ class _AIPaintInfoState extends State<AIPaintInfo> {
   /// ai结果图展示
   late List<Offset> aiResultsList = [];
 
+  /// ai json 数据
+  late String? aiResults = measureData.aiResults;
+
   /// ai的横纵坐标 四个点
   late Offset p1 = Offset.zero;
   late Offset p2 = Offset.zero;
@@ -69,7 +69,17 @@ class _AIPaintInfoState extends State<AIPaintInfo> {
   void onMeasuredAIResultsInfoChanged(Object sender, String e) {
     if (e.isNotEmpty) {
       aiResults = e;
-
+      final measureDataAIResults = jsonDecode(
+        aiResults ?? '',
+      );
+      for (int i = 0; i < (measureDataAIResults as List).length; i++) {
+        aiResult.add(
+          AIDiagnosisPerImageDTO.fromJson(
+            measureDataAIResults[i],
+          ),
+        );
+      }
+      print('ffffffffffffffffffffff');
       setState(() {});
     }
   }
@@ -179,14 +189,14 @@ class _AIPaintInfoState extends State<AIPaintInfo> {
     }
   }
 
-  @override
-  void didUpdateWidget(covariant AIPaintInfo oldWidget) {
-    if (oldWidget.controller != widget.controller) {
-      throw UnsupportedError("[VidTestPlayer] unsupport replace controller.");
-    }
+  // @override
+  // void didUpdateWidget(covariant AIPaintInfo oldWidget) {
+  //   if (oldWidget.controller != widget.controller) {
+  //     throw UnsupportedError("[VidTestPlayer] unsupport replace controller.");
+  //   }
 
-    super.didUpdateWidget(oldWidget);
-  }
+  //   super.didUpdateWidget(oldWidget);
+  // }
 
   @override
   void initState() {
@@ -227,7 +237,6 @@ class _AIPaintInfoState extends State<AIPaintInfo> {
             return const SizedBox();
           } else {
             return CustomMultiChildLayout(
-              key: UniqueKey(),
               delegate: _LayerLayoutDelegate(),
               children: [
                 LayoutId(
@@ -269,6 +278,7 @@ class _AIPaintInfoState extends State<AIPaintInfo> {
   Widget buildBox(BuildContext context, Widget child) {
     return Container(
       alignment: Alignment.center,
+      key: ValueKey(measureData.itemCurrentImage),
       child: child,
     );
   }
@@ -297,19 +307,6 @@ class _AIPaintInfoState extends State<AIPaintInfo> {
     application.updateRenderReady.addListener(_onMeasureRerenderReady);
     measureData.aiResultsInfoChanged
         .addListener(onMeasuredAIResultsInfoChanged);
-    await Future.delayed(const Duration(milliseconds: 300), () {
-      final measureDataAIResults = jsonDecode(
-        (aiResults ?? '').isEmpty ? measureData.aiResults : aiResults ?? '',
-      );
-      for (int i = 0; i < (measureDataAIResults as List).length; i++) {
-        aiResult.add(
-          AIDiagnosisPerImageDTO.fromJson(
-            measureDataAIResults[i],
-          ),
-        );
-      }
-      setState(() {});
-    });
   }
 
   void _removeListenrs() {