close method

void close(
  1. int arenaKey
)

Closes an arena. The first member in GestureRecognizerState.possible or GestureRecognizerState.accepted wins; all others are rejected.

Implementation

void close(int arenaKey) {
  final arena = _arenas[arenaKey];
  if (arena == null) return;

  GestureRecognizer? winner;
  for (final member in arena.members) {
    if (member.state == GestureRecognizerState.possible ||
        member.state == GestureRecognizerState.accepted) {
      winner = member;
      break;
    }
  }

  if (winner != null) {
    for (final other in arena.members) {
      if (other != winner) {
        other.rejectGesture();
      }
    }
    winner.acceptGesture();
  } else {
    // No possible winners — reject everyone.
    for (final member in arena.members) {
      member.rejectGesture();
    }
  }

  _arenas.remove(arenaKey);
}