didReplace method
The Navigator replaced oldRoute
with newRoute
.
Implementation
@override
void didReplace({Route? newRoute, Route? oldRoute}) {
super.didReplace(newRoute: newRoute, oldRoute: oldRoute);
final newName = _extractRouteName(newRoute);
final oldName = _extractRouteName(oldRoute);
final currentRoute = _RouteData.ofRoute(oldRoute);
// Log route replacement information
Get.log("REPLACE ROUTE $oldName");
Get.log("NEW ROUTE $newName");
// Report the new current route if available
if (newRoute != null) {
RouterReportManager.instance.reportCurrentRoute(newRoute);
}
// Update routing information
_routeSend?.update((value) {
// Update current route if it's a page route
switch (newRoute) {
case PageRoute():
value.current = newName ?? "";
default:
// Keep current value
break;
}
// Update other routing properties
value.args = newRoute?.settings.arguments;
value.route = newRoute;
value.isBack = false;
value.removed = "";
value.previous = oldName ?? '';
// Reset bottom sheet and dialog flags if needed
value.isBottomSheet =
currentRoute.isBottomSheet ? false : value.isBottomSheet;
value.isDialog = currentRoute.isDialog ? false : value.isDialog;
});
// Report route disposal for specific route types
if (oldRoute is GetPageRoute) {
RouterReportManager.instance.reportRouteWillDispose(oldRoute);
}
routing?.call(_routeSend);
}