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);
  final routeName = _extractRouteName(route);
  final currentRoute = _RouteData.ofRoute(route);
  final previousRouteName = _extractRouteName(previousRoute);

  Get.log("REMOVING ROUTE $routeName");
  Get.log("PREVIOUS ROUTE $previousRouteName");

  _routeSend?.update((value) {
    // A pages-API update (e.g. offAllNamed) reports the removal of every
    // superseded page after the push of the new top page; the bottom-most
    // removed route has no previous route, and letting it clobber the
    // route/previous recorded by that push would make `Get.rawRoute`
    // observed from a new page's controller null (#1237).
    if (previousRoute != null) value.route = previousRoute;
    value.isBack = false;
    value.removed = routeName ?? '';
    value.previous = previousRouteName ?? value.previous;
    value.isBottomSheet = currentRoute.isBottomSheet
        ? false
        : value.isBottomSheet;
    value.isDialog = currentRoute.isDialog ? false : value.isDialog;
  });

  routing?.call(_routeSend);
}