measure_tools_title.dart 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import 'package:fis_measure/interfaces/process/visuals/visual_area.dart';
  2. import 'package:fis_measure/interfaces/process/workspace/application.dart';
  3. import 'package:fis_measure/process/workspace/measure_controller.dart';
  4. import 'package:fis_measure/process/workspace/measure_data_controller.dart';
  5. import 'package:fis_measure/process/workspace/measure_handler.dart';
  6. import 'package:fis_measure/view/measure/measure_view_controller.dart';
  7. import 'package:fis_ui/index.dart';
  8. import 'package:flutter/material.dart';
  9. import 'package:get/get.dart';
  10. import 'package:fis_theme/theme.dart';
  11. import 'package:vid/us/vid_us_mode.dart';
  12. /// 测量方法
  13. class LeftMeasureTools extends StatefulWidget implements FWidget {
  14. const LeftMeasureTools();
  15. @override
  16. State<LeftMeasureTools> createState() => _LeftMeasureToolsState();
  17. }
  18. class _LeftMeasureToolsState extends State<LeftMeasureTools> {
  19. late IApplication application = Get.find<IApplication>();
  20. late final measureHandler = Get.find<MeasureHandler>();
  21. /// 数据
  22. late final measureData = Get.find<MeasureDataController>();
  23. late final measureController = Get.find<MeasureController>();
  24. /// 测量项控制器
  25. final measureMetaController = Get.find<MeasureMetaController>();
  26. // void changeItem(ItemMeta itemMeta) {
  27. // application.switchItem(itemMeta);
  28. // if (mounted) {
  29. // setState(() {});
  30. // }
  31. // }
  32. void applicationModesChanged(sender, List<VidUsMode> e) {
  33. if (mounted) {
  34. setState(() {});
  35. }
  36. }
  37. void visualAreaChanged(sender, IVisualArea e) {
  38. if (mounted) {
  39. setState(() {});
  40. }
  41. measureMetaController
  42. .setAvailableModes(e.mode.modeType.toString().split('.')[1]);
  43. }
  44. @override
  45. void initState() {
  46. super.initState();
  47. measureData.applicationModesChanged.addListener(applicationModesChanged);
  48. application.visualAreaChanged.addListener(visualAreaChanged);
  49. measureController.imageLoaded.addListener((sender, e) {
  50. application.visualAreaChanged.removeListener(visualAreaChanged);
  51. application = Get.find<IApplication>();
  52. application.visualAreaChanged.addListener(visualAreaChanged);
  53. });
  54. }
  55. @override
  56. void dispose() {
  57. super.dispose();
  58. measureData.applicationModesChanged.removeListener(applicationModesChanged);
  59. application.visualAreaChanged.removeListener(visualAreaChanged);
  60. }
  61. @override
  62. FWidget build(BuildContext context) {
  63. return FContainer(
  64. width: 300,
  65. height: 50,
  66. alignment: Alignment.topCenter,
  67. padding: const EdgeInsets.symmetric(horizontal: 15),
  68. child: FGridView.count(
  69. shrinkWrap: true,
  70. crossAxisCount: 4,
  71. crossAxisSpacing: 10,
  72. mainAxisSpacing: 10,
  73. childAspectRatio: 1 / 0.5,
  74. children: measureData.applicationModes.asMap().entries.map(
  75. (e) {
  76. final bool isACtiveModes =
  77. measureData.currentMode == e.value.type.name;
  78. return FInkWell(
  79. onTap: () {
  80. measureMetaController.setAvailableModes(e.value.type.name);
  81. setState(() {});
  82. application.switchMode(e.value.displayName);
  83. // application.switchItem(measureData.getItemMetaList[0]);
  84. },
  85. child: FContainer(
  86. alignment: Alignment.center,
  87. decoration: BoxDecoration(
  88. border: isACtiveModes
  89. ? Border.all(
  90. color: FTheme.ins.colorScheme.primary,
  91. )
  92. : Border.all(
  93. color: Colors.grey,
  94. ),
  95. borderRadius: BorderRadius.circular(4),
  96. color: isACtiveModes
  97. ? FTheme.ins.colorScheme.primary
  98. : Colors.grey,
  99. ),
  100. child: FText(
  101. e.value.displayName,
  102. style: const TextStyle(
  103. color: Colors.white,
  104. ),
  105. ),
  106. ),
  107. );
  108. },
  109. ).toList(),
  110. ),
  111. );
  112. }
  113. }