import 'package:fis_i18n/i18n.dart'; import 'package:fis_measure/interfaces/enums/annotation.dart'; import 'package:fis_measure/interfaces/enums/operate.dart'; import 'package:fis_measure/interfaces/process/workspace/application.dart'; import 'package:fis_measure/process/workspace/measure_handler.dart'; import 'package:fis_measure/view/measure/tool_chest_title.dart'; import 'package:fis_ui/index.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; /// 箭头注释按钮 class ArrowAnnotationButton extends FStatefulWidget { const ArrowAnnotationButton({ Key? key, }) : super(key: key); @override FState createState() => ArrowAnnotationButtonState(); } class ArrowAnnotationButtonState extends FState { final measureHandler = Get.find(); bool get isArrowMeasureAnnotationType => measureHandler.changedAnnotationType == AnnotationType.arrow && isAnnotationMode; bool get isAnnotationMode => Get.find().currentOperateType == MeasureOperateType.annotation; void _onChangedAnnotationType( Object sender, AnnotationType? e, ) { setState(() {}); } void _onChangedTab( Object sender, TabEnum? e, ) { setState(() {}); } @override void initState() { measureHandler.onChangedAnnotationType .addListener(_onChangedAnnotationType); measureHandler.onChangedTab.addListener(_onChangedTab); super.initState(); } @override void dispose() { measureHandler.onChangedAnnotationType .removeListener(_onChangedAnnotationType); measureHandler.onChangedTab.removeListener(_onChangedTab); super.dispose(); } @override FWidget build(BuildContext context) { return FContainer( height: 60, width: 300, child: FCenter( child: FColumn( children: [ FInk( child: FInkWell( onTap: () { measureHandler.changedAnnotationType = AnnotationType.arrow; final application = Get.find(); application.switchAnnotation(AnnotationType.arrow); setState(() {}); }, child: FIcon( Icons.call_made_rounded, color: isArrowMeasureAnnotationType ? Colors.blue : Colors.white, size: 30, ), ), ), FText( i18nBook.measure.arrow.t, style: isArrowMeasureAnnotationType ? const TextStyle( color: Colors.blue, fontSize: 14, ) : const TextStyle( color: Colors.white, fontSize: 14, ), ), ], ), ), ); } }