handlePointerMove method

  1. @override
void handlePointerMove(
  1. MouseMsg event,
  2. Offset localPosition
)
override

Called when a pointer-move event occurs.

Implementation

@override
void handlePointerMove(MouseMsg event, Offset localPosition) {
  if (state == GestureRecognizerState.defunct) return;
  if (initialPosition == null) return; // No prior pointer-down.

  final globalPos = Offset(event.x.toDouble(), event.y.toDouble());

  if (!_dragStarted) {
    // Check if we've moved beyond the drag slop.
    final delta = localPosition - initialPosition!;
    final distance = delta.dx * delta.dx + delta.dy * delta.dy;
    if (distance > kDragSlop * kDragSlop) {
      _dragStarted = true;
      resolve(GestureDisposition.accepted);

      addCmd(
        onDragStart?.call(
          DragStartDetails(
            globalPosition: _downGlobal ?? globalPos,
            localPosition: initialPosition!,
            button: _downButton,
          ),
        ),
      );

      // Also fire the first update with the delta from start to current.
      addCmd(
        onDragUpdate?.call(
          DragUpdateDetails(
            globalPosition: globalPos,
            localPosition: localPosition,
            delta: localPosition - initialPosition!,
          ),
        ),
      );
      _lastPosition = localPosition;
    }
  } else {
    // Already dragging — fire update with delta.
    final delta = localPosition - _lastPosition!;
    addCmd(
      onDragUpdate?.call(
        DragUpdateDetails(
          globalPosition: globalPos,
          localPosition: localPosition,
          delta: delta,
        ),
      ),
    );
    _lastPosition = localPosition;
  }
}