Browse Source

perf(measure): 颈动脉2D下的模式切换按钮移入右上展开菜单

gavin.chen 2 years ago
parent
commit
5d5f967db6

+ 6 - 0
lib/view/3d_view/measure_3d_view_switcher.dart

@@ -42,6 +42,10 @@ class _Measure3DViewSwitcherState extends State<Measure3DViewSwitcher> {
         });
         break;
       case MeasureMode.carotid3DMode:
+        setState(() {
+          ifShow3DSwitcher = false;
+          enable3DView = true;
+        });
         break;
     }
   }
@@ -91,7 +95,9 @@ class _Measure3DViewSwitcherState extends State<Measure3DViewSwitcher> {
         ]);
   }
 
+  ///TODO:[Gavin] 两个按钮移进canvas右上角
   FWidget modeButton() {
+    return FContainer();
     return FRow(
       mainAxisSize: MainAxisSize.max,
       mainAxisAlignment: MainAxisAlignment.spaceEvenly,

+ 57 - 0
lib/view/button_group/button_group.dart

@@ -2,13 +2,17 @@ import 'dart:async';
 
 import 'package:fis_i18n/i18n.dart';
 import 'package:fis_jsonrpc/rpc.dart';
+import 'package:fis_measure/interfaces/process/player/play_controller.dart';
 import 'package:fis_measure/interfaces/process/standard_line/calibration.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/process/workspace/measure_data_controller.dart';
 import 'package:fis_measure/process/workspace/measure_handler.dart';
 import 'package:fis_measure/utils/prompt_box.dart';
 import 'package:fis_measure/view/button_group/widget/qr_code_with_logo.dart';
 import 'package:fis_measure/view/paint/ai_patint_controller.dart';
+import 'package:fis_measure/view/player/controller.dart';
 import 'package:fis_ui/index.dart';
 
 import 'package:flutter/material.dart';
@@ -34,6 +38,8 @@ class _ButtonGroupState extends State<ButtonGroup> {
 
   /// 数据
   final measureData = Get.find<MeasureDataController>();
+  final playerController = Get.find<IPlayerController>() as VidPlayerController;
+  final measure3DViewController = Get.find<Measure3DViewController>();
   late final measureHandler = Get.find<MeasureHandler>();
   late final aiPatintController = Get.find<AiPatintController>();
   late bool canShowAI = [
@@ -42,6 +48,40 @@ class _ButtonGroupState extends State<ButtonGroup> {
     DiagnosisConclusionEnum.BenignAndMalignant
   ].contains(measureData.diagnosisConclusion);
 
+  bool canShowModeButton = false;
+  @override
+  void initState() {
+    super.initState();
+    measure3DViewController.updatePlayerMode.addListener(_onModeChanged);
+  }
+
+  @override
+  void dispose() {
+    measure3DViewController.updatePlayerMode.removeListener(_onModeChanged);
+    super.dispose();
+  }
+
+  /// 模式改变触发更新
+  void _onModeChanged(Object s, MeasureMode mode) {
+    switch (mode) {
+      case MeasureMode.vidMode:
+        setState(() {
+          canShowModeButton = false;
+        });
+        break;
+      case MeasureMode.carotid2DMode:
+        setState(() {
+          canShowModeButton = true;
+        });
+        break;
+      case MeasureMode.carotid3DMode:
+        setState(() {
+          canShowModeButton = false;
+        });
+        break;
+    }
+  }
+
   List<Widget> buildTitleButtonList() {
     return [
       _buildTitleButton(
@@ -104,6 +144,23 @@ class _ButtonGroupState extends State<ButtonGroup> {
             setState(() {});
           },
         ),
+      ],
+      if (canShowModeButton) ...[
+        _buildTitleButton(
+          FIcons.three_dimensional,
+          i18nBook.measure.carotid3DMode.t,
+          () {
+            measure3DViewController.backTo3DMode();
+          },
+        ),
+        _buildTitleButton(
+          Icons.play_circle_outline_rounded,
+          i18nBook.measure.vidMode.t,
+          () {
+            measure3DViewController.backToVidMode();
+            playerController.resetCurrentFrame();
+          },
+        ),
       ]
     ];
   }