didReplace method

  1. @override
void didReplace({
  1. Route? newRoute,
  2. Route? oldRoute,
})
override

The Navigator replaced oldRoute with newRoute.

Implementation

@override
void didReplace({Route? newRoute, Route? oldRoute}) {
  super.didReplace(newRoute: newRoute, oldRoute: oldRoute);

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

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

    // 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();
    }
  }
}