measure_player.dart 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import 'package:fis_measure/interfaces/process/workspace/measure_3d_view_controller.dart';
  2. import 'package:fis_measure/process/workspace/measure_3d_view_controller.dart';
  3. import 'package:fis_measure/process/workspace/measure_data_controller.dart';
  4. import 'package:fis_measure/view/3d_view/measure_3d_view.dart';
  5. import 'package:fis_measure/view/measure/measure_main_view.dart';
  6. import 'package:fis_ui/index.dart';
  7. import 'package:fis_ui/widgets/layout/offstage.dart';
  8. import 'package:flutter/material.dart';
  9. import 'package:get/get.dart';
  10. class MeasureRightBoard extends StatefulWidget implements FWidget {
  11. const MeasureRightBoard({Key? key}) : super(key: key);
  12. @override
  13. State<StatefulWidget> createState() => _MeasureRightBoardState();
  14. }
  15. class _MeasureRightBoardState extends State<MeasureRightBoard> {
  16. /// 数据
  17. final measureData = Get.find<MeasureDataController>();
  18. final measure3DViewController = Get.find<Measure3DViewController>();
  19. bool get isShell => measure3DViewController.isShell;
  20. bool get ifExist3DData => measure3DViewController.exist3DData;
  21. ///是否开启3D窗口
  22. bool enableMeasure3DView = false;
  23. @override
  24. void initState() {
  25. super.initState();
  26. measure3DViewController.updatePlayerMode.addListener(_onModeChanged);
  27. enableMeasure3DView =
  28. measure3DViewController.curMeasureMode == MeasureMode.carotid3DMode;
  29. }
  30. /// 模式改变触发更新
  31. void _onModeChanged(Object s, MeasureMode mode) {
  32. switch (mode) {
  33. case MeasureMode.vidMode:
  34. setState(() {
  35. enableMeasure3DView = false;
  36. });
  37. break;
  38. case MeasureMode.carotid2DMode:
  39. setState(() {
  40. enableMeasure3DView = false;
  41. });
  42. break;
  43. case MeasureMode.carotid3DMode:
  44. setState(() {
  45. enableMeasure3DView = true;
  46. });
  47. break;
  48. }
  49. }
  50. @override
  51. FWidget build(BuildContext context) {
  52. return FContainer(
  53. padding: const EdgeInsets.all(8).copyWith(left: 0),
  54. child: buildView(),
  55. );
  56. }
  57. FWidget buildView() {
  58. return FStack(
  59. children: [
  60. if (isShell) ...[
  61. FOffstage(
  62. offstage: !enableMeasure3DView,
  63. child: ifExist3DData
  64. ? Measure3DView(
  65. key: ValueKey(measureData.itemCurrentImage),
  66. )
  67. : FContainer(),
  68. ),
  69. FOffstage(
  70. offstage: enableMeasure3DView,
  71. child: MeasureMainView(
  72. key: ValueKey(measureData.itemCurrentImage),
  73. )),
  74. ] else ...[
  75. MeasureMainView(
  76. key: ValueKey(measureData.itemCurrentImage),
  77. )
  78. ]
  79. ],
  80. );
  81. }
  82. @override
  83. void dispose() {
  84. super.dispose();
  85. measure3DViewController.updatePlayerMode.removeListener(_onModeChanged);
  86. }
  87. }