measure_tools_title.dart 4.0 KB

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