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/view/3d_view/measure_3d_view.dart'; import 'package:fis_measure/view/measure/measure_main_view.dart'; import 'package:fis_ui/index.dart'; import 'package:fis_ui/widgets/layout/offstage.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; class MeasureRightBoard extends StatefulWidget implements FWidget { const MeasureRightBoard({Key? key}) : super(key: key); @override State createState() => _MeasureRightBoardState(); } class _MeasureRightBoardState extends State { /// 数据 final measureData = Get.find(); final measure3DViewController = Get.find(); bool get isShell => measure3DViewController.isShell; ///是否开启3D窗口 bool enableMeasure3DView = false; @override void initState() { super.initState(); measure3DViewController.updatePlayerMode.addListener(_onModeChanged); enableMeasure3DView = measure3DViewController.curMeasureMode == MeasureMode.carotid3DMode; } /// 模式改变触发更新 void _onModeChanged(Object s, MeasureMode mode) { switch (mode) { case MeasureMode.vidMode: setState(() { enableMeasure3DView = false; }); break; case MeasureMode.carotid2DMode: setState(() { enableMeasure3DView = false; }); break; case MeasureMode.carotid3DMode: setState(() { enableMeasure3DView = true; }); break; } } @override FWidget build(BuildContext context) { return FContainer( padding: const EdgeInsets.all(8).copyWith(left: 0), child: buildView(), ); } FWidget buildView() { return FStack( children: [ if (isShell) ...[ FOffstage( offstage: !enableMeasure3DView, child: Measure3DView( key: ValueKey(measureData.itemCurrentImage), ), ), FOffstage( offstage: enableMeasure3DView, child: MeasureMainView( key: ValueKey(measureData.itemCurrentImage), )), ] else ...[ MeasureMainView( key: ValueKey(measureData.itemCurrentImage), ) ] ], ); } @override void dispose() { super.dispose(); measure3DViewController.updatePlayerMode.removeListener(_onModeChanged); } }