pushAndRemoveUntil<T> method

Future<T?> pushAndRemoveUntil<T>(
  1. Widget widget, {
  2. required Type removeUntil,
  3. NavigationTransition? transition,
})

Pushes a new route while popping all routes above removeUntil. The removeUntil page must have been pushed with push before so the route name matches the widget type. If no route of type removeUntil is in the stack, all routes except the first one are removed.

Implementation

Future<T?> pushAndRemoveUntil<T>(
  Widget widget, {
  required Type removeUntil,
  NavigationTransition? transition,
}) async {
  final state = _key.currentState;
  if (state == null) {
    return null;
  }
  final result = await state.pushAndRemoveUntil<T>(
    _buildRoute<T>(widget, transition),
    (route) => route.settings.name == removeUntil.toString() || route.isFirst,
  );
  return result;
}