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:
- Getting started
- Upgrade an existing app
- Configuration
- Navigation
- Redirection
- Web
- Deep linking
- Transition animations
- Type-safe routes
- Named routes
- Error handling
Migration Guides
- 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
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
Libraries
- go_router
- A declarative router for Flutter based on Navigation 2 supporting deep linking, data-driven routes and more.