API Reference
Exports
Section titled “Exports”package:go_router_guards/go_router_guards.dart ├─ RouteGuard ├─ NavigationResolver ├─ GuardResult ├─ guardAll(List<RouteGuard>) → RouteGuard ├─ guardAnyOf(List<RouteGuard>, {String? fallbackRedirect}) → RouteGuard ├─ guardOneOf(List<RouteGuard>, {String? fallbackRedirect}) → RouteGuard ├─ GuardedRoute (mixin) ├─ GuardedShellRoute (mixin) ├─ ConditionalGuardRouteGuard
Section titled “RouteGuard”abstract class RouteGuard { const RouteGuard(); FutureOr<void> onNavigation( NavigationResolver resolver, BuildContext context, GoRouterState state, ); GoRouterRedirect toRedirect();}NavigationResolver
Section titled “NavigationResolver”class NavigationResolver { void next(); void redirect(String path); void block(); Future<GuardResult> get future;}Composition helpers
Section titled “Composition helpers”RouteGuard guardAll(List<RouteGuard> guards);RouteGuard guardAnyOf(List<RouteGuard> guards, {String? fallbackRedirect});RouteGuard guardOneOf(List<RouteGuard> guards, {String? fallbackRedirect});Mixins
Section titled “Mixins”mixin GuardedRoute on GoRouteData { RouteGuard get guard; FutureOr<String?> redirect(BuildContext context, GoRouterState state);}
mixin GuardedShellRoute on ShellRouteData { RouteGuard get guard; FutureOr<String?> redirect(BuildContext context, GoRouterState state);}ConditionalGuard
Section titled “ConditionalGuard”class ConditionalGuard extends RouteGuard { /* include/exclude paths */ }typedef GoRouterRedirect = FutureOr<String?> Function( BuildContext context, GoRouterState state,);Note: See Tutorials and How-to guides for usage and patterns.
Error Handling
Section titled “Error Handling”All guard methods should handle errors gracefully:
@overrideFutureOr<void> onGoRouterNavigation( NavigationResolver resolver, BuildContext context, GoRouterState state,) async { try { final result = await riskyOperation(); if (result.isValid) { resolver.next(); } else { resolver.redirect('/error'); } } catch (error) { // Log error and gracefully degrade logger.error('Guard failed: $error'); resolver.next(); // or resolver.redirect('/fallback'); }}