dvGoRouter function
GoRouter
dvGoRouter(
- List<
RouteBase> routes, { - String at = '/',
- List<
RouteBase> existing = const <RouteBase>[], - GoRouterRedirect? redirect,
- String? initialLocation,
- GoRouterWidgetBuilder? errorBuilder,
- List<
NavigatorObserver> ? observers, - Listenable? refreshListenable,
- int redirectLimit = 5,
For go_router: one GoRouter with Dartvel's routes mounted at at
beside the app's existing routes.
Dartvel's routes come first, so on a path both declare Dartvel's page
wins (and dartvel routes reports the clash as DV-ADOPT-002). The app's
redirect is asked about the app's own paths only; Dartvel's paths keep
Dartvel's guards. DV.Navigation is attached to the router.
Implementation
GoRouter dvGoRouter(
List<RouteBase> routes, {
String at = '/',
List<RouteBase> existing = const <RouteBase>[],
GoRouterRedirect? redirect,
String? initialLocation,
GoRouterWidgetBuilder? errorBuilder,
List<NavigatorObserver>? observers,
GlobalKey<NavigatorState>? navigatorKey,
Listenable? refreshListenable,
int redirectLimit = 5,
}) {
final List<RouteBase> mounted = dvMountRoutes(routes, at: at);
final GoRouter router = GoRouter(
routes: <RouteBase>[...mounted, ...existing],
initialLocation: initialLocation,
errorBuilder: errorBuilder,
observers: observers,
navigatorKey: navigatorKey,
refreshListenable: refreshListenable,
redirectLimit: redirectLimit,
redirect: redirect == null
? null
: (BuildContext context, GoRouterState state) {
final bool ours =
dvHostedLocation(state.uri.toString(), routes, at: at) != null;
return ours ? null : redirect(context, state);
},
);
DVNavigation.attach(router);
return router;
}