measure_tools_title.dart 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. final mediaQuery = MediaQuery.of(context);
  64. //屏幕缩放比例
  65. final devicePixelRatio = mediaQuery.devicePixelRatio;
  66. return FContainer(
  67. width: 300 / devicePixelRatio,
  68. height: 50,
  69. alignment: Alignment.topCenter,
  70. padding: const EdgeInsets.symmetric(horizontal: 15),
  71. child: FGridView.count(
  72. shrinkWrap: true,
  73. crossAxisCount: devicePixelRatio > 1.25
  74. ? 2
  75. : devicePixelRatio > 1
  76. ? 3
  77. : 4,
  78. crossAxisSpacing: 10,
  79. mainAxisSpacing: 10,
  80. childAspectRatio: 1 / 0.5,
  81. children: measureData.applicationModes.asMap().entries.map(
  82. (e) {
  83. final bool isACtiveModes =
  84. measureData.currentMode == e.value.type.name;
  85. return FInkWell(
  86. onTap: () {
  87. measureMetaController.setAvailableModes(e.value.type.name);
  88. setState(() {});
  89. application.switchMode(e.value.displayName);
  90. // application.switchItem(measureData.getItemMetaList[0]);
  91. },
  92. child: FContainer(
  93. alignment: Alignment.center,
  94. decoration: BoxDecoration(
  95. border: isACtiveModes
  96. ? Border.all(
  97. color: FTheme.ins.colorScheme.primary,
  98. )
  99. : Border.all(
  100. color: Colors.grey,
  101. ),
  102. borderRadius: BorderRadius.circular(4),
  103. color: isACtiveModes
  104. ? FTheme.ins.colorScheme.primary
  105. : Colors.grey,
  106. ),
  107. child: FText(
  108. e.value.displayName,
  109. style: const TextStyle(
  110. color: Colors.white,
  111. ),
  112. ),
  113. ),
  114. );
  115. },
  116. ).toList(),
  117. ),
  118. );
  119. }
  120. }