BaseTapGestureRecognizer class Null safety

A base class for gesture recognizers that recognize taps.

Gesture recognizers take part in gesture arenas to enable potential gestures to be disambiguated from each other. This process is managed by a GestureArenaManager.

A tap is defined as a sequence of events that starts with a down, followed by optional moves, then ends with an up. All move events must contain the same buttons as the down event, and must not be too far from the initial position. The gesture is rejected on any violation, a cancel event, or if any other recognizers wins the arena. It is accepted only when it is the last member of the arena.

The BaseTapGestureRecognizer considers all the pointers involved in the pointer event sequence as contributing to one gesture. For this reason, extra pointer interactions during a tap sequence are not recognized as additional taps. For example, down-1, down-2, up-1, up-2 produces only one tap on up-1.

The BaseTapGestureRecognizer can not be directly used, since it does not define which buttons to accept, or what to do when a tap happens. If you want to build a custom tap recognizer, extend this class by overriding isPointerAllowed and the handler methods.

See also:

  • TapGestureRecognizer, a ready-to-use tap recognizer that recognizes taps of the primary button and taps of the secondary button.
  • ModalBarrier, a widget that uses a custom tap recognizer that accepts any buttons.


BaseTapGestureRecognizer({Object? debugOwner, Set<PointerDeviceKind>? supportedDevices})
Creates a tap gesture recognizer. [...]


deadline Duration?
If non-null, the recognizer will call didExceedDeadline after this amount of time has elapsed since starting to track the primary pointer. [...]
final, inherited
debugDescription String
Returns a very short pretty description of the gesture that the recognizer looks for, like 'tap' or 'horizontal drag'.
read-only, override
debugOwner Object?
The recognizer's owner. [...]
final, inherited
gestureSettings DeviceGestureSettings?
Optional device specific configuration for device gestures that will take precedence over framework defaults.
read / write, inherited
hashCode int
The hash code for this object. [...]
read-only, inherited
initialPosition OffsetPair?
The location at which the primary pointer contacted the screen. [...]
read-only, inherited
postAcceptSlopTolerance double?
The maximum distance in logical pixels the gesture is allowed to drift after the gesture has been accepted. [...]
final, inherited
preAcceptSlopTolerance double?
The maximum distance in logical pixels the gesture is allowed to drift from the initial touch down position before the gesture is accepted. [...]
final, inherited
primaryPointer int?
The ID of the primary pointer this recognizer is tracking. [...]
read-only, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
state GestureRecognizerState
The current state of the recognizer. [...]
read-only, inherited
team GestureArenaTeam?
The team that this recognizer belongs to, if any. [...]
read / write, inherited


acceptGesture(int pointer) → void
Called when this member wins the arena for the given pointer id.
addAllowedPointer(PointerDownEvent event) → void
Registers a new pointer that's been checked to be allowed by this gesture recognizer. [...]
addPointer(PointerDownEvent event) → void
Registers a new pointer that might be relevant to this gesture detector. [...]
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children. [...]
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node. [...]
didExceedDeadline() → void
Override to be notified when deadline is exceeded. [...]
didExceedDeadlineWithEvent(PointerDownEvent event) → void
Same as didExceedDeadline but receives the event that initiated the gesture. [...]
@protected, inherited
didStopTrackingLastPointer(int pointer) → void
Called when the number of pointers this recognizer is tracking changes from one to zero. [...]
dispose() → void
Releases any resources used by the object. [...]
getKindForPointer(int pointer) PointerDeviceKind
For a given pointer ID, returns the device kind associated with it. [...]
@protected, inherited
handleEvent(PointerEvent event) → void
Called when a pointer event is routed to this recognizer. [...]
handleNonAllowedPointer(PointerDownEvent event) → void
Handles a pointer being added that's not allowed by this recognizer. [...]
handlePrimaryPointer(PointerEvent event) → void
Override to provide behavior for the primary pointer when the gesture is still possible.
handleTapCancel({required PointerDownEvent down, PointerCancelEvent? cancel, required String reason}) → void
A pointer that previously triggered handleTapDown will not end up causing a tap. [...]
handleTapDown({required PointerDownEvent down}) → void
A pointer has contacted the screen, which might be the start of a tap. [...]
handleTapUp({required PointerDownEvent down, required PointerUpEvent up}) → void
A pointer has stopped contacting the screen, which is recognized as a tap. [...]
invokeCallback<T>(String name, RecognizerCallback<T> callback, {String debugReport()?}) → T?
Invoke a callback provided by the application, catching and logging any exceptions. [...]
@protected, inherited
isPointerAllowed(PointerDownEvent event) bool
Checks whether or not a pointer is allowed to be tracked by this recognizer.
@protected, inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
rejectGesture(int pointer) → void
Called when this member loses the arena for the given pointer id.
resolve(GestureDisposition disposition) → void
Resolves this recognizer's participation in each gesture arena with the given disposition.
resolvePointer(int pointer, GestureDisposition disposition) → void
Resolves this recognizer's participation in the given gesture arena with the given disposition.
@mustCallSuper, @protected, inherited
startTrackingPointer(int pointer, [Matrix4? transform]) → void
Causes events related to the given pointer ID to be routed to this recognizer. [...]
@protected, override
stopTrackingIfPointerNoLongerDown(PointerEvent event) → void
Stops tracking the pointer associated with the given event if the event is a PointerUpEvent or a PointerCancelEvent event.
@protected, inherited
stopTrackingPointer(int pointer) → void
Stops events related to the given pointer ID from being routed to this recognizer. [...]
@protected, inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep. [...]
toString({DiagnosticLevel minLevel =}) String
A string representation of this object. [...]
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a string representation of this node and its descendants. [...]
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object. [...]
toStringShort() String
A brief description of this object, usually just the runtimeType and the hashCode. [...]


operator ==(Object other) bool
The equality operator. [...]