ActivityRouter constructor

ActivityRouter({
  1. required List<ActivityRouteBase> routes,
  2. String initialLocation = '/',
  3. ActivityRedirect? redirect,
  4. Widget errorBuilder(
    1. BuildContext,
    2. ActivityRouteState
    )?,
  5. int redirectLimit = 8,
  6. ActiveController? refreshController,
  7. String? restorationScopeId,
  8. GlobalKey<NavigatorState>? navigatorKey,
  9. Codec<Object?, Object?>? extraCodec,
  10. List<NavigatorObserver> observers = const [],
  11. bool overridePlatformDefaultLocation = false,
  12. bool debugLogDiagnostics = false,
})

Implementation

ActivityRouter({
  required List<ActivityRouteBase> routes,
  String initialLocation = '/',
  this.redirect,
  this.errorBuilder,
  this.redirectLimit = 8,
  ActiveController? refreshController,
  this.restorationScopeId,
  GlobalKey<NavigatorState>? navigatorKey,
  this.extraCodec,
  this.observers = const [],
  bool overridePlatformDefaultLocation = false,
  this.debugLogDiagnostics = false,
}) : routes = List.unmodifiable(routes),
     navigatorKey = navigatorKey ?? GlobalKey<NavigatorState>(),
     _controller = refreshController {
  if (redirectLimit < 1) {
    throw ArgumentError.value(redirectLimit, 'redirectLimit');
  }
  _collect(this.routes, '', [this.navigatorKey]);
  final platform =
      WidgetsBinding.instance.platformDispatcher.defaultRouteName;
  final location =
      !overridePlatformDefaultLocation && platform != '/'
          ? platform
          : initialLocation;
  _initialUri = _parseUri(location);
  routeInformationProvider = PlatformRouteInformationProvider(
    initialRouteInformation: RouteInformation(uri: _initialUri),
  );
  routerDelegate = ActivityRouterDelegate._(this);
  routeInformationParser = ActivityRouteInformationParser._(this);
  config = RouterConfig<ActivityRouteConfiguration>(
    routerDelegate: routerDelegate,
    routeInformationParser: routeInformationParser,
    routeInformationProvider: routeInformationProvider,
    backButtonDispatcher: RootBackButtonDispatcher(),
  );
  _subscription = _controller?.addOnStateChangedListener((_) => refresh());
}