didRemove method
route
Route that will be removed.
previousRoute
A route below the removed route. When removing
multiple routes, the previousRoute
is unchanged, and may be null.
route
被移除的route
previousRoute
被移除的route下面的route。当移除多个route时,该route不变,并且可能为null。
Implementation
@override
void didRemove(Route<dynamic> route, Route<dynamic>? previousRoute) {
super.didRemove(route, previousRoute);
// print('LifecycleObserver($hashCode)#didRemove('
// 'route: ${route.settings.name}, '
// 'previousRoute: ${previousRoute?.settings.name})');
RouteEntry entry = _getRouteEntry(route);
// 被移除的route触发invisible
_sendEventsToGivenRoute(entry, lifecycleEventsInactiveAndInvisible);
if (previousRoute?.isCurrent ?? false) {
// previousRoute成为上层route时,触发active
RouteEntry previousEntry = _getRouteEntry(previousRoute!);
_sendEventsToGivenRoute(previousEntry, lifecycleEventsVisibleAndActive);
}
_history.remove(entry);
}