runWithRouter<T> function
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});
}