didPop method
The Navigator popped route
.
The route immediately below that one, and thus the newly active
route, is previousRoute
.
Implementation
@override
void didPop(Route<dynamic> route, Route<dynamic>? previousRoute) {
super.didPop(route, previousRoute);
// print('LifecycleObserver($hashCode)#didPop('
// 'route(${route.hashCode}): ${route.settings.name}, '
// 'previousRoute(${previousRoute.hashCode}): ${previousRoute?.settings.name})');
RouteEntry entry = _getRouteEntry(route);
// Current route trigger pop
//
// 当前route触发pop
_sendEventsToGivenRoute(entry, lifecycleEventsInactiveAndInvisible);
_history.remove(entry);
if (previousRoute != null) {
RouteEntry previousEntry = _getRouteEntry(previousRoute);
if (route is PageRoute) {
// Previous Route trigger active
//
// 如果pop掉的route是PageRoute,则previousRoute触发active
_sendEventsToGivenRoute(previousEntry, lifecycleEventsVisibleAndActive);
if (previousRoute is PopupRoute) {
// Previous PageRoute trigger visible
//
// 如果previousRoute是PopupRoute,则前一个PageRoute触发visible
_sendEventsToLastPageRoute([LifecycleEvent.visible]);
}
} else if (route is PopupRoute) {
// Previous Route trigger active
//
// 如果如果pop掉的route是PopupRoute,则previousEntry触发active
_sendEventsToGivenRoute(previousEntry, [LifecycleEvent.active]);
}
}
}