handlePointerMove method
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;
}
}