runWithRouter<T> function

Future<T> runWithRouter<T>(
  1. Future<T> fn(
    1. Router router
    )
)

Run a function with an isolated Router instance.

Essential for SSR where each request needs its own router state. Prevents request state from leaking between concurrent requests.

// In your SSR handler:
final result = await runWithRouter((router) async {
  router.initialize(routes);
  router.replace(requestPath);
  return await renderToHtml(app, path: requestPath);
});

Implementation

Future<T> runWithRouter<T>(Future<T> Function(Router router) fn) {
  final router = Router.create();
  return runZoned(() => fn(router), zoneValues: {Router._zoneKey: router});
}