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.
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
See the API documentation for details on the following topics:
- Getting started
- Upgrade an existing app
- Configuration
- Navigation
- Redirection
- Web
- Deep linking
- Transition animations
- Type-safe routes
- Named routes
- Error handling
- Migrating to 12.0.0.
- Migrating to 11.0.0.
- Migrating to 10.0.0.
- Migrating to 9.0.0.
- Migrating to 8.0.0.
- Migrating to 7.0.0.
- Migrating to 6.0.0
- Migrating to 5.1.2
- Migrating to 5.0
- Migrating to 4.0
- Migrating to 3.0
- Migrating to 2.5
- Migrating to 2.0
See the Changelog for a list of new features and breaking changes.
See the GitHub issues for all Go Router issues.
The project follows the same priority system as flutter framework. P0 P1 P2 P3