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}) {
  developer.log(
    '[PageNavigatorObserver][didReplace]newRoute: ${PageInfo.convertPageName(newRoute)}, oldRoute: ${PageInfo.convertPageName(oldRoute)}',
    name: debugLogType.pagePerformance,
  );
  if (newRoute == null) {
    return;
  }

  int index = _invalidIndex;
  if (oldRoute != null) {
    index = _pageStack
        .indexWhere((pageInfo) => pageInfo.uniqueId == oldRoute.hashCode);
  }

  if (index > _invalidIndex) {
    _pageStack[index] = PageInfo.route(newRoute);
  } else {
    _pageStack.add(PageInfo.route(newRoute));
  }

  _handleNavigator(NavigatorType.replace);
}