MultiDragScaleGestureRecognizer class

A gesture recognizer that can recognize both individual pointer drags and scale gestures simultaneously.

This recognizer tracks each pointer independently (like Flutter's ImmediateMultiDragGestureRecognizer) while also tracking the overall scale gesture (like Flutter's ScaleGestureRecognizer). Each pointer fires its own drag callbacks independently. When 2+ pointers are down and movement exceeds scaleThreshold, scale callbacks also fire.

Use hasDrag and hasScale to enable only the features needed. Both default to false; the dispatcher sets them via enableDrag/enableScale.

Inheritance

Constructors

MultiDragScaleGestureRecognizer({Object? debugOwner, Set<PointerDeviceKind>? supportedDevices, AllowedButtonsFilter? allowedButtonsFilter, double scaleThreshold = 1.05})
Create a gesture recognizer for tracking multi-drag and scale gestures.

Properties

allowedButtonsFilter AllowedButtonsFilter
Called when interaction starts. This limits the dragging behavior for custom clicks (such as scroll click). Its parameter comes from PointerEvent.buttons.
finalinherited
debugDescription String
Returns a very short pretty description of the gesture that the recognizer looks for, like 'tap' or 'horizontal drag'.
no setteroverride
debugOwner Object?
The recognizer's owner.
finalinherited
gestureSettings DeviceGestureSettings?
Optional device specific configuration for device gestures that will take precedence over framework defaults.
getter/setter pairinherited
hasDrag bool
Whether drag callbacks should fire. Controlled by the dispatcher.
getter/setter pair
hashCode int
The hash code for this object.
no setterinherited
hasScale bool
Whether scale callbacks should fire. Controlled by the dispatcher.
getter/setter pair
onScaleEnd GestureScaleEndCallback?
Called when a scale gesture ends.
getter/setter pair
onScaleStart GestureScaleStartCallback?
Called when a scale gesture starts (when 2+ pointers are active).
getter/setter pair
onScaleUpdate GestureScaleUpdateCallback?
Called when a scale gesture is updated.
getter/setter pair
onStart GestureMultiDragStartCallback?
Called when a pointer starts dragging. One callback per pointer. Return a Drag object to receive updates for this specific pointer.
getter/setter pair
pointerCount int
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
scaleThreshold double
The threshold for determining when a scale gesture has occurred. Default is 1.05 (5% change in scale).
final
supportedDevices Set<PointerDeviceKind>?
The kind of devices that are allowed to be recognized as provided by supportedDevices in the constructor, or the currently deprecated kind. These cannot both be set. If both are null, events from all device kinds will be tracked and recognized.
getter/setter pairinherited

Methods

acceptGesture(int pointer) → void
Called when this member wins the arena for the given pointer id.
override
addAllowedPointer(PointerDownEvent event) → void
Registers a new pointer that's been checked to be allowed by this gesture recognizer.
override
addAllowedPointerPanZoom(PointerPanZoomStartEvent event) → void
Registers a new pointer pan/zoom that's been checked to be allowed by this gesture recognizer.
inherited
addPointer(PointerDownEvent event) → void
Registers a new pointer that might be relevant to this gesture detector.
inherited
addPointerPanZoom(PointerPanZoomStartEvent event) → void
Registers a new pointer pan/zoom that might be relevant to this gesture detector.
inherited
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
dispose() → void
Releases any resources used by the object.
override
getKindForPointer(int pointer) PointerDeviceKind
For a given pointer ID, returns the device kind associated with it.
inherited
handleNonAllowedPointer(PointerDownEvent event) → void
Handles a pointer being added that's not allowed by this recognizer.
inherited
handleNonAllowedPointerPanZoom(PointerPanZoomStartEvent event) → void
Handles a pointer pan/zoom being added that's not allowed by this recognizer.
inherited
invokeCallback<T>(String name, RecognizerCallback<T> callback, {String debugReport()?}) → T?
Invoke a callback provided by the application, catching and logging any exceptions.
inherited
isPointerAllowed(PointerDownEvent event) bool
Checks whether or not a pointer is allowed to be tracked by this recognizer.
inherited
isPointerPanZoomAllowed(PointerPanZoomStartEvent event) bool
Checks whether or not a pointer pan/zoom is allowed to be tracked by this recognizer.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
rejectGesture(int pointer) → void
Called when this member loses the arena for the given pointer id.
override
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A brief description of this object, usually just the runtimeType and the hashCode.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited