addAllowedPointer method

  1. @override
void addAllowedPointer(
  1. PointerDownEvent event
)
override

Registers a new pointer that's been checked to be allowed by this gesture recognizer.

Subclasses of GestureRecognizer are supposed to override this method instead of addPointer because addPointer will be called for each pointer being added while addAllowedPointer is only called for pointers that are allowed by this recognizer.

Implementation

@override
void addAllowedPointer(PointerDownEvent event) {
  if (state == GestureRecognizerState.ready) {
    // If there is no result in the previous gesture arena,
    // we ignore them and prepare to accept a new pointer.
    if (_down != null && _up != null) {
      assert(_down!.pointer == _up!.pointer);
      _reset();
    }

    assert(_down == null && _up == null);
    // `_down` must be assigned in this method instead of `handlePrimaryPointer`,
    // because `acceptGesture` might be called before `handlePrimaryPointer`,
    // which relies on `_down` to call `handleTapDown`.
    _down = event;
  }
  if (_down != null) {
    // This happens when this tap gesture has been rejected while the pointer
    // is down (i.e. due to movement), when another allowed pointer is added,
    // in which case all pointers are ignored. The `_down` being null
    // means that _reset() has been called, since it is always set at the
    // first allowed down event and will not be cleared except for reset(),
    super.addAllowedPointer(event);
  }
}