1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import 'package:fis_measure/interfaces/process/standard_line/calibration.dart';
- import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
- import 'package:fis_measure/values/colors.dart';
- import 'package:fis_measure/view/cursor.dart';
- import 'package:flutter/material.dart';
- /// 参考校准线手势画布
- class StandardLineCalibrationGesture extends StatefulWidget {
- const StandardLineCalibrationGesture(this.controller, {Key? key})
- : super(key: key);
- final IStandardLineCalibrationController controller;
- @override
- State<StandardLineCalibrationGesture> createState() => _GestureState();
- }
- class _GestureState extends State<StandardLineCalibrationGesture> {
- // ignore: constant_identifier_names
- static const C_CURSOR_SIZE = 16.0;
- Offset position = Offset.zero;
- @override
- Widget build(BuildContext context) {
- final controller = widget.controller;
- return MouseRegion(
- cursor: SystemMouseCursors.none,
- onHover: (event) {
- setState(() {
- _updatePosition(event.localPosition);
- controller.executeGesturePoint(
- event.localPosition,
- PointInfoType.mouseMove,
- );
- });
- },
- child: GestureDetector(
- onTapDown: (details) {
- controller.executeGesturePoint(
- details.localPosition,
- PointInfoType.mouseDown,
- );
- },
- onTapUp: (details) {
- controller.executeGesturePoint(
- details.localPosition,
- PointInfoType.mouseUp,
- );
- },
- child: Stack(
- children: [
- Positioned(
- // top: position.dy - 16,
- // left: position.dx - 16,
- top: position.dy,
- left: position.dx,
- child: const MeasureCursor(
- type: MeasureCursorType.cursor01,
- size: C_CURSOR_SIZE,
- color: MeasureColors.Primary,
- ),
- ),
- ],
- ),
- ),
- );
- }
- void _updatePosition(Offset offset) {
- const side = C_CURSOR_SIZE / 2;
- double dx = offset.dx - side;
- double dy = offset.dy - side;
- if (dx < 0) dx = 0;
- if (dy < 0) dy = 0;
- position = Offset(dx, dy);
- }
- }
|