handle method

List<PointerSignal> handle(
  1. PointerSample sample
)

Implementation

List<PointerSignal> handle(PointerSample sample) {
  final signals = <PointerSignal>[
    ..._flushExpired(sample.timestampMs),
    PointerSignal.fromSample(sample, _signalTypeFor(sample.phase)),
  ];

  switch (sample.phase) {
    case PointerPhase.down:
      _downStates[sample.pointerId] = _PointerDownState(
        position: sample.position,
      );
      break;
    case PointerPhase.move:
      final down = _downStates[sample.pointerId];
      if (down != null && !down.movedBeyondSlop) {
        down.movedBeyondSlop =
            (sample.position - down.position).distance > settings.tapSlop;
      }
      break;
    case PointerPhase.up:
      final down = _downStates.remove(sample.pointerId);
      if (down != null && !down.movedBeyondSlop) {
        _handleTap(sample, signals);
      }
      break;
    case PointerPhase.cancel:
      _downStates.remove(sample.pointerId);
      break;
  }

  return signals;
}