ActivityRouter constructor
ActivityRouter({
- required List<
ActivityRouteBase> routes, - String initialLocation = '/',
- ActivityRedirect? redirect,
- Widget errorBuilder()?,
- int redirectLimit = 8,
- ActiveController? refreshController,
- String? restorationScopeId,
- Codec<
Object?, Object?> ? extraCodec, - List<
NavigatorObserver> observers = const [], - bool overridePlatformDefaultLocation = false,
- 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());
}