arrow_gesture_panel.dart 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import 'package:fis_measure/interfaces/process/workspace/application.dart';
  2. import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:get/get.dart';
  5. import '../positioned_cursor.dart';
  6. /// 箭头注释手势面板
  7. class AnnotationArrowGesturePanel extends StatefulWidget {
  8. const AnnotationArrowGesturePanel({Key? key}) : super(key: key);
  9. @override
  10. State<AnnotationArrowGesturePanel> createState() => _PanelState();
  11. }
  12. class _PanelState extends State<AnnotationArrowGesturePanel> {
  13. late final application = Get.find<IApplication>();
  14. final mouseState = Get.put<IMouseState>(MouseState());
  15. @override
  16. Widget build(BuildContext context) {
  17. return GestureDetector(
  18. onTapDown: (details) {
  19. application.createPointInfo(
  20. details.localPosition,
  21. PointInfoType.mouseDown,
  22. );
  23. },
  24. onPanUpdate: (details) {
  25. mouseState.mousePosition = details.localPosition;
  26. },
  27. child: MouseRegion(
  28. cursor: SystemMouseCursors.none,
  29. child: Stack(
  30. children: const [
  31. PositionedCursor(),
  32. ],
  33. ),
  34. onHover: (event) {
  35. mouseState.mousePosition = event.localPosition;
  36. application.createPointInfo(
  37. event.localPosition,
  38. PointInfoType.mouseMove,
  39. );
  40. },
  41. ),
  42. );
  43. }
  44. }