didRemove method

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

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);
}