@@ -349,17 +349,20 @@ abstract class DragGestureRecognizer extends OneSequenceGestureRecognizer {
349349
350350 void _addPointer (PointerEvent event) {
351351 _velocityTrackers[event.pointer] = velocityTrackerBuilder (event);
352- if (_state == _DragState .ready) {
353- _state = _DragState .possible;
354- _initialPosition = OffsetPair (global: event.position, local: event.localPosition);
355- _finalPosition = _initialPosition;
356- _pendingDragOffset = OffsetPair .zero;
357- _globalDistanceMoved = 0.0 ;
358- _lastPendingEventTimestamp = event.timeStamp;
359- _lastTransform = event.transform;
360- _checkDown ();
361- } else if (_state == _DragState .accepted) {
362- resolve (GestureDisposition .accepted);
352+ switch (_state) {
353+ case _DragState .ready:
354+ _state = _DragState .possible;
355+ _initialPosition = OffsetPair (global: event.position, local: event.localPosition);
356+ _finalPosition = _initialPosition;
357+ _pendingDragOffset = OffsetPair .zero;
358+ _globalDistanceMoved = 0.0 ;
359+ _lastPendingEventTimestamp = event.timeStamp;
360+ _lastTransform = event.transform;
361+ _checkDown ();
362+ case _DragState .possible:
363+ break ;
364+ case _DragState .accepted:
365+ resolve (GestureDisposition .accepted);
363366 }
364367 }
365368
@@ -421,36 +424,37 @@ abstract class DragGestureRecognizer extends OneSequenceGestureRecognizer {
421424 final Offset position = (event is PointerMoveEvent ) ? event.position : (event.position + (event as PointerPanZoomUpdateEvent ).pan);
422425 final Offset localPosition = (event is PointerMoveEvent ) ? event.localPosition : (event.localPosition + (event as PointerPanZoomUpdateEvent ).localPan);
423426 _finalPosition = OffsetPair (local: localPosition, global: position);
424- if (_state == _DragState .accepted) {
425- _checkUpdate (
426- sourceTimeStamp: event.timeStamp,
427- delta: _getDeltaForDetails (localDelta),
428- primaryDelta: _getPrimaryValueFromOffset (localDelta),
429- globalPosition: position,
430- localPosition: localPosition,
431- );
432- } else {
433- _pendingDragOffset += OffsetPair (local: localDelta, global: delta);
434- _lastPendingEventTimestamp = event.timeStamp;
435- _lastTransform = event.transform;
436- final Offset movedLocally = _getDeltaForDetails (localDelta);
437- final Matrix4 ? localToGlobalTransform = event.transform == null ? null : Matrix4 .tryInvert (event.transform! );
438- _globalDistanceMoved += PointerEvent .transformDeltaViaPositions (
439- transform: localToGlobalTransform,
440- untransformedDelta: movedLocally,
441- untransformedEndPosition: localPosition
442- ).distance * (_getPrimaryValueFromOffset (movedLocally) ?? 1 ).sign;
443- if (_hasSufficientGlobalDistanceToAccept (event.kind, gestureSettings? .touchSlop)) {
444- _hasDragThresholdBeenMet = true ;
445- if (_acceptedActivePointers.contains (event.pointer)) {
446- _checkDrag (event.pointer);
447- } else {
448- resolve (GestureDisposition .accepted);
427+ switch (_state) {
428+ case _DragState .ready || _DragState .possible:
429+ _pendingDragOffset += OffsetPair (local: localDelta, global: delta);
430+ _lastPendingEventTimestamp = event.timeStamp;
431+ _lastTransform = event.transform;
432+ final Offset movedLocally = _getDeltaForDetails (localDelta);
433+ final Matrix4 ? localToGlobalTransform = event.transform == null ? null : Matrix4 .tryInvert (event.transform! );
434+ _globalDistanceMoved += PointerEvent .transformDeltaViaPositions (
435+ transform: localToGlobalTransform,
436+ untransformedDelta: movedLocally,
437+ untransformedEndPosition: localPosition
438+ ).distance * (_getPrimaryValueFromOffset (movedLocally) ?? 1 ).sign;
439+ if (_hasSufficientGlobalDistanceToAccept (event.kind, gestureSettings? .touchSlop)) {
440+ _hasDragThresholdBeenMet = true ;
441+ if (_acceptedActivePointers.contains (event.pointer)) {
442+ _checkDrag (event.pointer);
443+ } else {
444+ resolve (GestureDisposition .accepted);
445+ }
449446 }
450- }
447+ case _DragState .accepted:
448+ _checkUpdate (
449+ sourceTimeStamp: event.timeStamp,
450+ delta: _getDeltaForDetails (localDelta),
451+ primaryDelta: _getPrimaryValueFromOffset (localDelta),
452+ globalPosition: position,
453+ localPosition: localPosition,
454+ );
451455 }
452456 }
453- if (event is PointerUpEvent || event is PointerCancelEvent || event is PointerPanZoomEndEvent ) {
457+ if (event case PointerUpEvent () || PointerCancelEvent () || PointerPanZoomEndEvent () ) {
454458 _giveUpPointer (event.pointer);
455459 }
456460 }
0 commit comments