BloomRouter class

Pure Dart route matching and navigation guard evaluation engine.

Operates without DOM dependencies, making it usable across VM unit tests, server-side rendering (SSR), and browser-side client routers.

Matches URL paths against a tree of BloomRoute definitions, parses parameters, evaluates BloomRouteGuard instances, and coordinates speculative route prefetching.

final router = BloomRouter([
  BloomRoute('/', (params) => const Div(text: 'Home')),
  BloomRoute('/users/:id', (params) => Div(text: 'User ${params['id']}')),
], notFound: BloomRoute('*', (params) => const Div(text: '404 Not Found')));

final match = router.match('/users/42?tab=profile#bio');
if (match != null) {
  print(match.query['tab']); // 'profile'
  print(match.fragment); // 'bio'
  final node = match.build();
}

Constructors

BloomRouter(List<BloomRoute> routes, {BloomRoute? notFound, bool trailing = false})
Creates a BloomRouter with the given routes hierarchy and options.

Properties

hashCode → int
The hash code for this object.
no setterinherited
notFound → BloomRoute?
Fallback route definition rendered when no registered pattern matches.
final
routes → List<BloomRoute>
Registered route hierarchy.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
trailing → bool
Whether trailing slashes are stripped from paths before matching.
final

Methods

evaluateGuards(BloomRoute route, String location, Map<String, String> params) → Future<GuardResult>
Evaluates all navigation guards attached to route in sequential order.
match(String path) → BloomRouteMatch?
Matches path against registered routes.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
prefetchRoute(String path) → Future<void>
Prefetches route data and lazily-loaded components for path using this router instance.
resolveRedirects(String location, {int maxRedirects = 10}) → Future<GuardResolution>
Follows guard redirects for location until navigation is allowed.
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Methods

clearPrefetchCache() → void
Clears the session-level cache of prefetched paths.
prefetch(String path) → Future<void>
Prefetches route data and lazy components for path across all active router instances.