arrow_annotation_button.dart 2.9 KB

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