GoRouter.dev

Historical source · 2021–2022

Original guide · Examples

Preserved original documentation, with its original version context.

Edition published 21 Oct 2026Original APIs
On this page
Historical text from the original project repository (2021–2022). For the current APIs, use the 2026 field guide. Original wording and credits are preserved.

Examples

You can see go_router in action via the following examples:

  • main.dart: define a basic routing policy using a set of declarative GoRoute objects
  • error_screen.dart: define a custom error screen for use when there's a routing or builder error
  • init_loc.dart: start at a specific location instead of home (/), which is the default
  • sub_routes.dart: provide a stack of pages based on a set of sub routes
  • push.dart: provide a stack of pages based on a series of calls to context.push()
  • redirection.dart: redirect one route to another based on changing app state
  • query_params.dart: optional query parameters will be passed to all builders
  • router_stream_refresh.dart: use a Stream to trigger a refresh instead of a Listenable
  • loading_page.dart: load a repository once the user has logged in, showing a loading screen while they wait
  • named_routes.dart: navigate via name instead of location URI
  • transitions.dart: use custom transitions during routing
  • async_data.dart: async data lookup
  • nested_nav.dart: include information about children on a page as part of the route location
  • nav_builder.dart: inject widgets above the Navigator widget
  • shared_scaffold.dart: show a navBuilder implementation that shares a scaffold between pages
  • url_strategy.dart: turn off the # in the Flutter web URL
  • user_input.dart: using Navigator or a go_router route to navigate to a page that gathers user input as well as canceling a pop when the user presses the Back button
  • nav_observer.dart: pass additional information to the NavigatorObserver via default args to MaterialPage, etc.
  • state_restoration.dart: test to ensure that go_router works with state restoration (it does)
  • cupertino.dart: test to ensure that go_router works with the Cupertino design language as well as Material (it does)
  • widgets_app.dart: test to ensure that go_router works with the WidgetsApp as well as the MaterialApp (it does)
  • router_neglect.dart: prevent the browser from creating history entries when navigating
  • books/main.dart: port of the navigation_and_routing sample to use go_router

You can run these examples from within your IDE of choice or from the example folder via the command line:

sh / example
$ cd example
$ flutter run lib/main.dart

Sources & version context

GoRouter.dev documentation edition. The preserved text describes the original package APIs. Follow the current guide before using it in a new project.

Find your next route