go_router

A declarative routing package for Flutter that uses the Router API to provide a convenient, url-based API for navigating between different screens. You can define URL patterns, navigate using a URL, handle deep links, and a number of other navigation-related scenarios.

Features

GoRouter has a number of features to make navigation straightforward:

  • Parsing path and query parameters using a template syntax (for example, "user/:id')
  • Displaying multiple screens for a destination (sub-routes)
  • Redirection support - you can re-route the user to a different URL based on application state, for example to a sign-in when the user is not authenticated
  • Support for multiple Navigators via ShellRoute - you can display an inner Navigator that displays its own pages based on the matched route. For example, to display a BottomNavigationBar that stays visible at the bottom of the screen
  • Support for both Material and Cupertino apps
  • Backwards-compatibility with Navigator API

Documentation

See the API documentation for details on the following topics:

Migration Guides

Changelog

See the Changelog for a list of new features and breaking changes.

Triage

See the GitHub issues for all Go Router issues.

The project follows the same priority system as flutter framework. P0 P1 P2 P3

Package PRs

Libraries

go_router
A declarative router for Flutter based on Navigation 2 supporting deep linking, data-driven routes and more.