Current field guide · 2026
Test journeys, not only matches
Verify the requested URI, the visible screen, the navigation frame, and the way back.
On this page
A small matrix catches large regressions
For each important destination, test direct entry, in-app entry, Back, and reload where relevant. Add signed-in and signed-out states for protected routes. Test empty and malformed identifiers as well as the happy path.
Assert visible behavior
A route existing in the configuration does not prove that its screen is visible. In widget tests, inspect the displayed content and the navigation frame. In browser tests, inspect the actual URL and the document response after a fresh entry.
Keep routing independent of a live backend
Use controlled repositories and session state to make loading, missing-resource, and authentication outcomes deterministic. Keep separate integration tests for real APIs and platform deep links.
Know the limits of this explorer
The interactive route explorer on this website is a JavaScript model of URL parsing and matching. It does not execute Dart or emulate Flutter's Navigator. Use it to understand the contract, then run the downloaded Flutter example with the SDK version you ship.
// Suggested journey assertions:
// 1. /books/42 opens book 42 directly.
// 2. A malformed ID shows a useful error.
// 3. A protected route redirects while signed out.
// 4. Back returns to the expected parent or branch.
// 5. Web refresh serves the app, not a hosting 404.Sources & version context
GoRouter.dev documentation edition. Examples illustrate the APIs described in the linked primary documentation. Adapt application-owned widgets and services to your project. They are not an executed Flutter session in this browser.