measure_player.dart 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. ///是否开启3D窗口
  21. bool enableMeasure3DView = false;
  22. @override
  23. void initState() {
  24. super.initState();
  25. measure3DViewController.updatePlayerMode.addListener(_onModeChanged);
  26. enableMeasure3DView =
  27. measure3DViewController.curMeasureMode == MeasureMode.carotid3DMode;
  28. }
  29. /// 模式改变触发更新
  30. void _onModeChanged(Object s, MeasureMode mode) {
  31. switch (mode) {
  32. case MeasureMode.vidMode:
  33. setState(() {
  34. enableMeasure3DView = false;
  35. });
  36. break;
  37. case MeasureMode.carotid2DMode:
  38. setState(() {
  39. enableMeasure3DView = false;
  40. });
  41. break;
  42. case MeasureMode.carotid3DMode:
  43. setState(() {
  44. enableMeasure3DView = true;
  45. });
  46. break;
  47. }
  48. }
  49. @override
  50. FWidget build(BuildContext context) {
  51. return FContainer(
  52. padding: const EdgeInsets.all(8).copyWith(left: 0),
  53. child: buildView(),
  54. );
  55. }
  56. FWidget buildView() {
  57. return FStack(
  58. children: [
  59. if (isShell) ...[
  60. FOffstage(
  61. offstage: !enableMeasure3DView,
  62. child: Measure3DView(
  63. key: ValueKey(measureData.itemCurrentImage),
  64. ),
  65. ),
  66. FOffstage(
  67. offstage: enableMeasure3DView,
  68. child: MeasureMainView(
  69. key: ValueKey(measureData.itemCurrentImage),
  70. )),
  71. ] else ...[
  72. MeasureMainView(
  73. key: ValueKey(measureData.itemCurrentImage),
  74. )
  75. ]
  76. ],
  77. );
  78. }
  79. @override
  80. void dispose() {
  81. super.dispose();
  82. measure3DViewController.updatePlayerMode.removeListener(_onModeChanged);
  83. }
  84. }