12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import 'package:fis_measure/interfaces/process/workspace/application.dart';
- import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
- import 'package:fis_measure/view/gesture/mouse_gesture.dart';
- import 'package:flutter/material.dart';
- import 'package:get/get.dart';
- import '../positioned_cursor.dart';
- /// 箭头注释手势面板
- class AnnotationArrowGesturePanel extends StatefulWidget {
- const AnnotationArrowGesturePanel({Key? key}) : super(key: key);
- @override
- State<AnnotationArrowGesturePanel> createState() => _PanelState();
- }
- class _PanelState extends State<AnnotationArrowGesturePanel> {
- late final application = Get.find<IApplication>();
- CursorDisplayType displayType = CursorDisplayType.none;
- final mouseState = Get.find<IMouseState>();
- @override
- Widget build(BuildContext context) {
- return GestureDetector(
- onTapDown: (details) {
- application.createPointInfo(
- details.localPosition,
- PointInfoType.mouseDown,
- );
- },
- onPanUpdate: (details) {
- mouseState.mousePosition = details.localPosition;
- },
- child: MouseRegion(
- onEnter: (e) {
- setState(() {
- displayType = CursorDisplayType.normal;
- });
- },
- onExit: (e) {
- setState(() {
- displayType = CursorDisplayType.none;
- });
- },
- cursor: SystemMouseCursors.none,
- child: Stack(
- children: [
- _buildCursor(),
- ],
- ),
- onHover: (event) {
- mouseState.mousePosition = event.localPosition;
- application.createPointInfo(
- event.localPosition,
- PointInfoType.mouseMove,
- );
- },
- ),
- );
- }
- Widget _buildCursor() {
- switch (displayType) {
- case CursorDisplayType.none:
- return Container();
- case CursorDisplayType.normal:
- return const PositionedCursor();
- default:
- return const PositionedCursor();
- }
- }
- }
|