import 'package:fis_measure/interfaces/process/visuals/visual_area.dart'; import 'package:fis_measure/interfaces/process/workspace/application.dart'; import 'package:fis_measure/process/workspace/measure_controller.dart'; import 'package:fis_measure/process/workspace/measure_data_controller.dart'; import 'package:fis_measure/process/workspace/measure_handler.dart'; import 'package:fis_measure/view/measure/measure_view_controller.dart'; import 'package:fis_ui/index.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:fis_theme/theme.dart'; import 'package:vid/us/vid_us_mode.dart'; /// 测量方法 class LeftMeasureTools extends StatefulWidget implements FWidget { const LeftMeasureTools(); @override State createState() => _LeftMeasureToolsState(); } class _LeftMeasureToolsState extends State { late IApplication application = Get.find(); late final measureHandler = Get.find(); /// 数据 late final measureData = Get.find(); late final measureController = Get.find(); /// 测量项控制器 final measureMetaController = Get.find(); // void changeItem(ItemMeta itemMeta) { // application.switchItem(itemMeta); // if (mounted) { // setState(() {}); // } // } void applicationModesChanged(sender, List e) { if (mounted) { setState(() {}); } } void visualAreaChanged(sender, IVisualArea e) { if (mounted) { setState(() {}); } measureMetaController .setAvailableModes(e.mode.modeType.toString().split('.')[1]); } @override void initState() { super.initState(); measureData.applicationModesChanged.addListener(applicationModesChanged); application.visualAreaChanged.addListener(visualAreaChanged); measureController.imageLoaded.addListener((sender, e) { application.visualAreaChanged.removeListener(visualAreaChanged); application = Get.find(); application.visualAreaChanged.addListener(visualAreaChanged); }); } @override void dispose() { super.dispose(); measureData.applicationModesChanged.removeListener(applicationModesChanged); application.visualAreaChanged.removeListener(visualAreaChanged); } @override FWidget build(BuildContext context) { final mediaQuery = MediaQuery.of(context); //屏幕缩放比例 final devicePixelRatio = mediaQuery.devicePixelRatio; return FContainer( width: 300 / devicePixelRatio, height: 50, alignment: Alignment.topCenter, padding: const EdgeInsets.symmetric(horizontal: 15), child: FGridView.count( shrinkWrap: true, crossAxisCount: devicePixelRatio > 1.25 ? 2 : devicePixelRatio > 1 ? 3 : 4, crossAxisSpacing: 10, mainAxisSpacing: 10, childAspectRatio: 1 / 0.5, children: measureData.applicationModes.asMap().entries.map( (e) { final bool isACtiveModes = measureData.currentMode == e.value.type.name; return FInkWell( onTap: () { measureMetaController.setAvailableModes(e.value.type.name); setState(() {}); application.switchMode(e.value.displayName); // application.switchItem(measureData.getItemMetaList[0]); }, child: FContainer( alignment: Alignment.center, decoration: BoxDecoration( border: isACtiveModes ? Border.all( color: FTheme.ins.colorScheme.primary, ) : Border.all( color: Colors.grey, ), borderRadius: BorderRadius.circular(4), color: isACtiveModes ? FTheme.ins.colorScheme.primary : Colors.grey, ), child: FText( e.value.displayName, style: const TextStyle( color: Colors.white, ), ), ), ); }, ).toList(), ), ); } }