GestureBinding mixin
A binding for the gesture subsystem.
Lifecycle of pointer events and the gesture arena
PointerDownEvent
When a PointerDownEvent is received by the GestureBinding (from dart:ui.PlatformDispatcher.onPointerDataPacket, as interpreted by the PointerEventConverter), a hitTest is performed to determine which HitTestTarget nodes are affected. (Other bindings are expected to implement hitTest to defer to HitTestable objects. For example, the rendering layer defers to the RenderView and the rest of the render object hierarchy.)
The affected nodes then are given the event to handle (dispatchEvent calls HitTestTarget.handleEvent for each affected node). If any have relevant GestureRecognizers, they provide the event to them using GestureRecognizer.addPointer. This typically causes the recognizer to register with the PointerRouter to receive notifications regarding the pointer in question.
Once the hit test and dispatching logic is complete, the event is then passed to the aforementioned PointerRouter, which passes it to any objects that have registered interest in that event.
Finally, the gestureArena is closed for the given pointer (GestureArenaManager.close), which begins the process of selecting a gesture to win that pointer.
Other events
A pointer that is PointerEvent.down may send further events, such as PointerMoveEvent, PointerUpEvent, or PointerCancelEvent. These are sent to the same HitTestTarget nodes as were found when the PointerDownEvent was received (even if they have since been disposed; it is the responsibility of those objects to be aware of that possibility).
Then, the events are routed to any still-registered entrants in the PointerRouter's table for that pointer.
When a PointerUpEvent is received, the GestureArenaManager.sweep method is invoked to force the gesture arena logic to terminate if necessary.
- Superclass constraints
- Implemented types
- Mixin applications
Properties
- debugSamplingClock → SamplingClock?
-
Overrides the sampling clock for debugging and testing.
no setter
- gestureArena → GestureArenaManager
-
The gesture arenas used for disambiguating the meaning of sequences of
pointer events.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- locked → bool
-
Whether lockEvents is currently locking events.
no setterinherited
- platformDispatcher → PlatformDispatcher
-
The ui.PlatformDispatcher to which this binding is bound.
no setterinherited
- pointerRouter → PointerRouter
-
A router that routes all pointer events received from the engine.
final
- pointerSignalResolver → PointerSignalResolver
-
The resolver used for determining which widget handles a
PointerSignalEvent.
final
- resamplingEnabled ↔ bool
-
Enable pointer event resampling for touch devices by setting
this to true.
getter/setter pair
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- samplingClock → SamplingClock
-
Provides access to the current DateTime and
StopWatch
objects for sampling.no setter - samplingOffset ↔ Duration
-
Offset relative to current frame time that should be used for
resampling. The samplingOffset is expected to be negative.
Non-negative samplingOffset is allowed but will effectively
disable resampling.
getter/setter pair
- window → SingletonFlutterWindow
-
Deprecated. Will be removed in a future version of Flutter.
no setterinherited
Methods
-
cancelPointer(
int pointer) → void - Dispatch a PointerCancelEvent for the given pointer soon.
-
debugCheckZone(
String entryPoint) → bool -
Checks that the current Zone is the same as that which was used
to initialize the binding.
inherited
-
dispatchEvent(
PointerEvent event, HitTestResult? hitTestResult) → void -
Dispatch an event to pointerRouter and the path of a hit test result.
override
-
handleEvent(
PointerEvent event, HitTestEntry< HitTestTarget> entry) → void -
Override this method to receive events.
override
-
handlePointerEvent(
PointerEvent event) → void - Dispatch an event to the targets found by a hit test on its position.
-
hitTest(
HitTestResult result, Offset position) → void -
Deprecated. Use hitTestInView instead.
override
-
hitTestInView(
HitTestResult result, Offset position, int viewId) → void -
Determine which HitTestTarget objects are located at a given position in
the specified view.
override
-
initInstances(
) → void -
The initialization method. Subclasses override this method to hook into
the platform and otherwise configure their services. Subclasses must call
"super.initInstances()".
override
-
initServiceExtensions(
) → void -
Called when the binding is initialized, to register service
extensions.
inherited
-
lockEvents(
Future< void> callback()) → Future<void> -
Locks the dispatching of asynchronous events and callbacks until the
callback's future completes.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
performReassemble(
) → Future< void> -
This method is called by reassembleApplication to actually cause the
application to reassemble, e.g. after a hot reload.
inherited
-
postEvent(
String eventKind, Map< String, dynamic> eventData) → void -
All events dispatched by a BindingBase use this method instead of
calling developer.postEvent directly so that tests for BindingBase
can track which events were dispatched by overriding this method.
inherited
-
reassembleApplication(
) → Future< void> -
Cause the entire application to redraw, e.g. after a hot reload.
inherited
-
registerBoolServiceExtension(
{required String name, required AsyncValueGetter< bool> getter, required AsyncValueSetter<bool> setter}) → void -
Registers a service extension method with the given name (full
name "ext.flutter.name"), which takes a single argument
"enabled" which can have the value "true" or the value "false"
or can be omitted to read the current value. (Any value other
than "true" is considered equivalent to "false". Other arguments
are ignored.)
inherited
-
registerNumericServiceExtension(
{required String name, required AsyncValueGetter< double> getter, required AsyncValueSetter<double> setter}) → void -
Registers a service extension method with the given name (full
name "ext.flutter.name"), which takes a single argument with the
same name as the method which, if present, must have a value
that can be parsed by double.parse, and can be omitted to read
the current value. (Other arguments are ignored.)
inherited
-
registerServiceExtension(
{required String name, required ServiceExtensionCallback callback}) → void -
Registers a service extension method with the given name (full name
"ext.flutter.name").
inherited
-
registerSignalServiceExtension(
{required String name, required AsyncCallback callback}) → void -
Registers a service extension method with the given name (full
name "ext.flutter.name"), which takes no arguments and returns
no value.
inherited
-
registerStringServiceExtension(
{required String name, required AsyncValueGetter< String> getter, required AsyncValueSetter<String> setter}) → void -
Registers a service extension method with the given name (full name
"ext.flutter.name"), which optionally takes a single argument with the
name "value". If the argument is omitted, the value is to be read,
otherwise it is to be set. Returns the current value.
inherited
-
resetGestureBinding(
) → void - Reset states of GestureBinding.
-
toString(
) → String -
A string representation of this object.
inherited
-
unlocked(
) → void -
Called by lockEvents when events get unlocked.
override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Properties
- instance → GestureBinding
-
The singleton instance of this object.
no setter