didPush method

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

When boot first page, previousRoute is null.

启动第一个页面时,previousRoute为null。

Implementation

@override
void didPush(Route<dynamic> route, Route<dynamic>? previousRoute) {
  super.didPush(route, previousRoute);
  // print('LifecycleObserver($hashCode)#didPush('
  //     'route(${route.hashCode}): ${route.settings.name}, '
  //     'previousRoute(${previousRoute?.hashCode}): ${previousRoute?.settings.name})');

  if (previousRoute != null) {
    try {
      RouteEntry previousEntry = _getRouteEntry(previousRoute);
      if (route is PageRoute) {
        // previousRoute trigger invisible
        //
        // previousRoute触发invisible
        _sendEventsToGivenRoute(
            previousEntry, lifecycleEventsInactiveAndInvisible);
        if (previousRoute is PopupRoute) {
          // Previous PageRoute trigger invisible
          //
          // 前一个PageRoute触发invisible
          _sendEventsToLastPageRoute([LifecycleEvent.invisible]);
        }
      } else if (route is PopupRoute) {
        // Previous route trigger inactive
        //
        // previousRoute触发inactive
        _sendEventsToGivenRoute(previousEntry, [LifecycleEvent.inactive]);
      }
    } catch (e) {
      // print(e);
    }
  }

  // 新push进来的route添加进history
  _history.add(RouteEntry(route));
}