didPushRouteInformation method

  1. @protected
  2. @override
  3. @mustCallSuper
Future<bool> didPushRouteInformation(
  1. RouteInformation routeInformation
)
inherited

Called when the host tells the application to push a new RouteInformation and a restoration state onto the router.

Observers are expected to return true if they were able to handle the notification. Observers are notified in registration order until one returns true.

This method exposes the pushRouteInformation notification from SystemChannels.navigation.

The default implementation is to call the didPushRoute directly with the RouteInformation.location.

Implementation

// ignore: comment_references
/// [SystemChannels.navigation].
///
/// The default implementation is to call the [didPushRoute] directly with the
/// [RouteInformation.location].
@protected
@override
@mustCallSuper
Future<bool> didPushRouteInformation(
    RouteInformation routeInformation) async {
  /// No 'setState()' functions are allowed to fully function at this point.
  _rebuildAllowed = false;

  /// Set if a Controller successfully 'handles' the notification.
  bool handled = false;

  for (final listener in _beforeList) {
    await listener.didPushRouteInformation(routeInformation);
  }
  for (final con in _controllerList) {
    final didPush = await con.didPushRouteInformation(routeInformation);
    if (didPush) {
      handled = true;
    }
  }
  for (final listener in _afterList) {
    await listener.didPushRouteInformation(routeInformation);
  }
  _rebuildAllowed = true;
  if (_rebuildRequested || _inTester) {
    _rebuildRequested = false;

    /// Perform a 'rebuild' if requested.
    refresh();
  }
  return handled;
}