didPop method

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

The Navigator popped route.

The route immediately below that one, and thus the newly active route, is previousRoute.

Implementation

@override
void didPop(Route route, Route? previousRoute) {
  super.didPop(route, previousRoute);
  final currentRoute = _RouteData.ofRoute(route);
  final newRoute = _RouteData.ofRoute(previousRoute);

  // Log appropriate message based on route type
  switch (currentRoute) {
    case var r when r.isBottomSheet || r.isDialog:
      Get.log("CLOSE ${r.name}");
    case var r when r.isGetPageRoute:
      Get.log("CLOSE TO ROUTE ${r.name}");
    default:
      // No logging needed
      break;
  }

  // Report the current route if available
  if (previousRoute != null) {
    RouterReportManager.instance.reportCurrentRoute(previousRoute);
  }

  // Update routing information
  _routeSend?.update((value) {
    // Update current and previous route information
    switch (previousRoute) {
      case PageRoute():
        value.current = _extractRouteName(previousRoute) ?? "";
        value.previous = newRoute.name ?? "";
      case _ when value.previous.isNotEmpty:
        value.current = value.previous;
      default:
        // Keep current value
        break;
    }

    // Update other routing properties
    value.args = previousRoute?.settings.arguments;
    value.route = previousRoute;
    value.isBack = true;
    value.removed = "";
    value.isBottomSheet = newRoute.isBottomSheet;
    value.isDialog = newRoute.isDialog;
  });

  routing?.call(_routeSend);
}