arrow_annotation_button.dart 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import 'package:fis_i18n/i18n.dart';
  2. import 'package:fis_measure/interfaces/enums/annotation.dart';
  3. import 'package:fis_measure/interfaces/enums/operate.dart';
  4. import 'package:fis_measure/interfaces/process/workspace/application.dart';
  5. import 'package:fis_measure/process/workspace/measure_handler.dart';
  6. import 'package:fis_measure/view/measure/operate_type_change_button.dart';
  7. import 'package:fis_measure/view/measure/measure_panel_head.dart';
  8. import 'package:fis_ui/index.dart';
  9. import 'package:flutter/material.dart';
  10. import 'package:get/get.dart';
  11. /// 箭头注释按钮
  12. class ArrowAnnotationButton extends FStatefulWidget {
  13. const ArrowAnnotationButton({
  14. Key? key,
  15. }) : super(key: key);
  16. @override
  17. FState<ArrowAnnotationButton> createState() => ArrowAnnotationButtonState();
  18. }
  19. class ArrowAnnotationButtonState extends FState<ArrowAnnotationButton> {
  20. final measureHandler = Get.find<MeasureHandler>();
  21. bool get isArrowMeasureAnnotationType =>
  22. measureHandler.changedAnnotationType == AnnotationType.arrow &&
  23. isAnnotationMode;
  24. bool get isAnnotationMode =>
  25. Get.find<IApplication>().currentOperateType ==
  26. MeasureOperateType.annotation;
  27. void _onChangedAnnotationType(
  28. Object sender,
  29. AnnotationType? e,
  30. ) {
  31. setState(() {});
  32. }
  33. void _onOperateTypeChanged(
  34. Object sender,
  35. MeasureOperateType? e,
  36. ) {
  37. setState(() {});
  38. }
  39. @override
  40. void initState() {
  41. measureHandler.onChangedAnnotationType
  42. .addListener(_onChangedAnnotationType);
  43. measureHandler.onOperateTypeChanged.addListener(_onOperateTypeChanged);
  44. super.initState();
  45. }
  46. @override
  47. void dispose() {
  48. measureHandler.onChangedAnnotationType
  49. .removeListener(_onChangedAnnotationType);
  50. measureHandler.onOperateTypeChanged.removeListener(_onOperateTypeChanged);
  51. super.dispose();
  52. }
  53. @override
  54. FWidget build(BuildContext context) {
  55. return FContainer(
  56. height: 60,
  57. width: 300,
  58. child: FCenter(
  59. child: FColumn(
  60. children: [
  61. FInk(
  62. child: FInkWell(
  63. onTap: () {
  64. measureHandler.changedAnnotationType = AnnotationType.arrow;
  65. final application = Get.find<IApplication>();
  66. application.switchAnnotation(AnnotationType.arrow);
  67. setState(() {});
  68. },
  69. child: FIcon(
  70. Icons.call_made_rounded,
  71. color:
  72. isArrowMeasureAnnotationType ? Colors.blue : Colors.white,
  73. size: 30,
  74. ),
  75. ),
  76. ),
  77. FText(
  78. i18nBook.measure.arrow.t,
  79. style: isArrowMeasureAnnotationType
  80. ? const TextStyle(
  81. color: Colors.blue,
  82. fontSize: 14,
  83. )
  84. : const TextStyle(
  85. color: Colors.white,
  86. fontSize: 14,
  87. ),
  88. ),
  89. ],
  90. ),
  91. ),
  92. );
  93. }
  94. }