popUntil method

void popUntil(
  1. RoutePredicate predicate
)

Calls pop repeatedly until the predicate returns true.

The predicate may be applied to the same route more than once if Route.willHandlePopInternally is true.

To pop until a route with a certain name, use the RoutePredicate returned from ModalRoute.withName.

The routes are closed with null as their return value.

See pop for more details of the semantics of popping a route.

Typical usage is as follows:
link
void _doLogout() {
  navigator.popUntil(ModalRoute.withName('/login'));
}

Implementation

void popUntil(RoutePredicate predicate) {
  _RouteEntry? candidate = _lastRouteEntryWhereOrNull(_RouteEntry.isPresentPredicate);
  while (candidate != null) {
    if (predicate(candidate.route)) {
      return;
    }
    pop();
    candidate = _lastRouteEntryWhereOrNull(_RouteEntry.isPresentPredicate);
  }
}