didRemove method

  1. @override
void didRemove(
  1. Route route,
  2. Route? previousRoute
)
override

The Navigator removed route.

If only one route is being removed, then the route immediately below that one, if any, is previousRoute.

If multiple routes are being removed, then the route below the bottommost route being removed, if any, is previousRoute, and this method will be called once for each removed route, from the topmost route to the bottommost route.

Implementation

@override
void didRemove(Route route, Route? previousRoute) {
  super.didRemove(route, previousRoute);

  // is a framework route?
  if (route.settings.arguments is PageConfiguration) {

    // get pushed & popped route listeners
    var popped = listenersOf(route);
    var pushed = listenersOf(previousRoute);

    // notify popped route(s)
    Map<String?, String>? parameters;
    for (var listener in popped) {
      var result = listener.onNavigatorPop();
      parameters ??= result;
    }

    // notify pushed route(s)
    for (var listener in pushed) {
      listener.onNavigatorPush(parameters: parameters);
    }

    // signal change
    for (INavigatorObserver listener in _listeners) {
      listener.onNavigatorChange();
    }
  }
}