# go_router 18.1.0

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




## Installing
```
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add 'go_router:18.1.0'
```
Published: 2026-10-14T18:48:43.023827Z
Expected archive SHA-256: 8b05bc90a4f8f8d579db351e2bd6bac566813e12953494dc2a9d7461e7c6dbe7

Available in cache; verification: upstream_checksum
## Direct dependencies
- collection: ^1.15.0
- cupertino_ui: ^1.0.0
- flutter: map[sdk:flutter]
- flutter_web_plugins: map[sdk:flutter]
- logging: ^1.0.0
- material_ui: ^1.0.0
- meta: ^1.7.0

## Package README (untrusted upstream documentation)
# 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](https://pub.dev/documentation/go_router/latest/go_router/ShellRoute-class.html) -
  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](https://pub.dev/documentation/go_router/latest/topics/Get%20started-topic.html)
- [Upgrade an existing app](https://pub.dev/documentation/go_router/latest/topics/Upgrading-topic.html)
- [Configuration](https://pub.dev/documentation/go_router/latest/topics/Configuration-topic.html)
- [Navigation](https://pub.dev/documentation/go_router/latest/topics/Navigation-topic.html)
- [Redirection](https://pub.dev/documentation/go_router/latest/topics/Redirection-topic.html)
- [Web](https://pub.dev/documentation/go_router/latest/topics/Web-topic.html)
- [Deep linking](https://pub.dev/documentation/go_router/latest/topics/Deep%20linking-topic.html)
- [Transition animations](https://pub.dev/documentation/go_router/latest/topics/Transition%20animations-topic.html)
- [Type-safe routes](https://pub.dev/documentation/go_router/latest/topics/Type-safe%20routes-topic.html)
- [Named routes](https://pub.dev/documentation/go_router/latest/topics/Named%20routes-topic.html)
- [Error handling](https://pub.dev/documentation/go_router/latest/topics/Error%20handling-topic.html)
- [State restoration](https://pub.dev/documentation/go_router/latest/topics/State%20restoration-topic.html)

## Migration Guides
- [Migrating to 18.0.0](https://flutter.dev/go/go-router-v18-breaking-changes).
- [Migrating to 17.0.0](https://flutter.dev/go/go-router-v17-breaking-changes).
- [Migrating to 16.0.0](https://flutter.dev/go/go-router-v16-breaking-changes).
- [Migrating to 15.0.0](https://flutter.dev/go/go-router-v15-breaking-changes).
- [Migrating to 14.0.0](https://flutter.dev/go/go-router-v14-breaking-changes).
- [Migrating to 13.0.0](https://flutter.dev/go/go-router-v13-breaking-changes).
- [Migrating to 12.0.0](https://flutter.dev/go/go-router-v12-breaking-changes).
- [Migrating to 11.0.0](https://flutter.dev/go/go-router-v11-breaking-changes).
- [Migrating to 10.0.0](https://flutter.dev/go/go-router-v10-breaking-changes).
- [Migrating to 9.0.0](https://flutter.dev/go/go-router-v9-breaking-changes).
- [Migrating to 8.0.0](https://flutter.dev/go/go-router-v8-breaking-changes).
- [Migrating to 7.0.0](https://flutter.dev/go/go-router-v7-breaking-changes).
- [Migrating to 6.0.0](https://flutter.dev/go/go-router-v6-breaking-changes)
- [Migrating to 5.1.2](https://flutter.dev/go/go-router-v5-1-2-breaking-changes)
- [Migrating to 5.0](https://flutter.dev/go/go-router-v5-breaking-changes)
- [Migrating to 4.0](https://flutter.dev/go/go-router-v4-breaking-changes)
- [Migrating to 3.0](https://flutter.dev/go/go-router-v3-breaking-changes)
- [Migrating to 2.5](https://flutter.dev/go/go-router-v2-5-breaking-changes)
- [Migrating to 2.0](https://flutter.dev/go/go-router-v2-breaking-changes)

## Changelog
See the
[Changelog](https://github.com/flutter/packages/blob/main/packages/go_router/CHANGELOG.md)
for a list of new features and breaking changes.

## Triage
See the [GitHub issues](https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-asc+label%3A"p%3A%20go_router")
for all Go Router issues.

The project follows the same priority system as flutter framework.
[P0](https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-asc+label%3A"p%3A%20go_router"+label%3AP0)
[P1](https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-asc+label%3A"p%3A%20go_router"+label%3AP1)
[P2](https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-asc+label%3A"p%3A%20go_router"+label%3AP2)
[P3](https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-asc+label%3A"p%3A%20go_router"+label%3AP3)

[Package PRs](https://github.com/flutter/packages/pulls?q=is%3Aopen+is%3Apr+label%3A%22p%3A+go_router%22)

## Roadmap

This package is considered feature-complete.  The Flutter team's primary focus will be on
addressing bug fixes and ensuring stability.  While active feature development is not currently
planned, we still welcome and encourage community contributions to expand the package's
functionality.

## Changelog
## 18.1.0

- Adds `clipBehavior` to `ShellRoute` and `StatefulShellBranch`, forwarded to the nested `Navigator`.

## 18.0.2

- Fixes `ShellRoute`/`StatefulShellRoute` shell chrome (e.g. a side rail or app bar painted before the routed child) being dropped from the semantics tree by the active route's `ModalBarrier`.
Fixes pushed routes nested within a shell being lost when a dynamic routing configuration changes.

## 18.0.1

Clarifies `onEnter` documentation regarding evaluation order relative to `redirect:` chains.

## 18.0.0

- Migrates to material_ui and cupertino_ui.
- Updates minimum supported SDK version to Flutter 3.44/Dart 3.12.

## 17.5.0

- Adds route `metadata` support, including inheritance and override behavior with exposure on `GoRouterState`.
- Documents support for regular expression constraints in GoRoute path parameters.

## 17.4.0

- Fixes onExit ignored for GoRoute nested inside ShellRoute
- Adds `BlockedInitialNavigationException` (a `GoException` subtype), raised when the initial navigation is blocked by `onEnter` with no prior route to restore, so apps can distinguish this case in `onException` without string matching.

## 17.3.0

- Updates minimum supported SDK version to Flutter 3.38/Dart 3.10.
- Adds `hasOverriddenOnExit` parameter to `GoRouteData.$route` and `RelativeGoRouteData.$route` helper methods for type-safe routes. When set to `true`, enables custom `onExit` callback invocation from route data classes extending `GoRouteData` or `RelativeGoRouteData` when the route is removed from the navigation stack.

## 17.2.3

- Fixes an assertion failure when navigating to URLs with hash fragments missing a leading slash.

## 17.2.2

- Fixes `pop()` restoring stale configuration when route has `onExit`, which could cause the popped route to reappear with async redirects.

## 17.2.1

- Fixes chained top-level redirects not being fully resolved (e.g. `/ → /a → /b` stopping at `/a`).
- Fixes route-level redirects not triggering top-level redirect re-evaluation on the new location.

## 17.2.0

- Fixes `Block.then()` and `Allow.then()` navigation callbacks being silently lost when triggered by `refreshListenable` due to re-entrant route processing.
- Adds `encoder`, `decoder` and `compare` parameters to `TypedQueryParameter` annotation for custom encoding, decoding and comparison of query parameters in `TypedGoRoute` constructors.

## 17.1.0

- Adds `TypedQueryParameter` annotation to override parameter names in `TypedGoRoute` constructors.

## 17.0.1

- Fixes an issue where `onEnter` blocking causes navigation stack loss (stale state restoration).
- Updates minimum supported SDK version to Flutter 3.32/Dart 3.8.

## 17.0.0

- **BREAKING CHANGE**
  - `ShellRoute`'s navigating changes notify `GoRouter`'s observers by default.
  - Adds `notifyRootObserver` to `ShellRouteBase`, `ShellRoute`, `StatefulShellRoute`, `ShellRouteData.$route`, `TypedShellRoute`, `TypedStatefulShellRoute`.

## 16.3.0

- Adds a top-level `onEnter` callback with access to current and next route states.

## 16.2.5

- Fixes `GoRouter.of(context)` access inside redirect callbacks by providing router access through Zone-based context tracking.
- Adds support for using context extension methods (e.g., `context.namedLocation()`, `context.go()`) within redirect callbacks.

## 16.2.4

- Fix Android Cold Start deep link with empty path losing scheme and authority.

## 16.2.3

- Fixes an issue where iOS back gesture pops entire ShellRoute instead of the active sub-route.

## 16.2.2

- Fixes broken links in readme.

## 16.2.1

- Adds state restoration topic to documentation.

## 16.2.0

- Adds `RelativeGoRouteData` and `TypedRelativeGoRoute`.
- Updates minimum supported SDK version to Flutter 3.29/Dart 3.7.

## 16.1.0

- Adds annotation for go_router_builder that enable custom string encoder/decoder [#110781](https://github.com/flutter/flutter/issues/110781). **Requires go_router_builder >= 3.1.0**.

## 16.0.0

- **BREAKING CHANGE**
  - Bump major version for `GoRouteData` breaking changes.
  - (Previously 15.2.4) Fixes routing to treat URLs with different cases (e.g., `/Home` vs `/home`) as distinct routes.
  - (Previously 15.2.3) Updates Type-safe routes topic documentation to use the mixin from `go_router_builder` 3.0.0.
  - (Previously 15.2.2) Fixes calling `PopScope.onPopInvokedWithResult` in branch routes.
  - (Previously 15.2.1) Fixes Popping state and re-rendering scaffold at the same time doesn't update the URL on web.
  - (Previously 15.2.0) `GoRouteData` now defines `.location`, `.go(context)`, `.push(context)`, `.pushReplacement(context)`, and `replace(context)` to be used for [Type-safe routing](https://pub.dev/documentation/go_router/latest/topics/Type-safe%20routes-topic.html). **Requires go_router_builder >= 3.0.0**.

## 15.1.3

- Updates minimum supported SDK version to Flutter 3.27/Dart 3.6.
- Fixes typo in API docs.

## 15.1.2

- Fixes focus request propagation from `GoRouter` to `Navigator` by properly handling the `requestFocus` parameter.

## 15.1.1

- Adds missing `caseSensitive` to `GoRouteData.$route`.

## 15.1.0

- Adds `caseSensitive` to `TypedGoRoute`.

## 15.0.0

- **BREAKING CHANGE**
  - URLs are now case sensitive.
  - Adds `caseSensitive` parameter to `GoRouter` (default to `true`).
  - See [Migrating to 15.0.0](https://flutter.dev/go/go-router-v15-breaking-changes)

## 14.8.1

- Secured canPop method for the lack of matches in routerDelegate's configuration.

## 14.8.0

- Adds `preload` parameter to `StatefulShellBranchData.$branch`.

## 14.7.2

- Add missing `await` keyword to `onTap` callback in `navigation.md`.

## 14.7.1

- Fixes return type of current state getter on `GoRouter` and `GoRouterDelegate` to be non-nullable.

## 14.7.0

- Adds fragment support to GoRouter, enabling direct specification and automatic handling of fragments in routes.

## 14.6.4

- Rephrases readme.

## 14.6.3

- Updates minimum supported SDK version to Flutter 3.22/Dart 3.4.
- Updates readme.

## 14.6.2

- Replaces deprecated collection method usage.

## 14.6.1

- Fixed `PopScope`, and `WillPopScop` was not handled properly in the Root routes.

## 14.6.0

- Allows going to a path relatively by prefixing `./`

## 14.5.0

- Adds preload support to StatefulShellRoute, configurable via `preload` parameter on StatefulShellBranch.

## 14.4.1

- Adds `missing_code_block_language_in_doc_comment` lint.

## 14.4.0

- Adds current state getter on `GoRouter` that returns the current `GoRouterState`.

## 14.3.0

- Adds missing implementation for the routerNeglect parameter in GoRouter.

## 14.2.9

- Relaxes route path requirements. Both root and child routes can now start with or without '/'.

## 14.2.8

- Updated custom_stateful_shell_route example to better support swiping in TabView as well as demonstration of the use of PageView.

## 14.2.7

- Fixes issue so that the parseRouteInformationWithContext can handle non-http Uris.

## 14.2.6

- Fixes replace and pushReplacement uri when only one route match in current route match list.

## 14.2.5

- Fixes an issue where android back button pops pages in the wrong order.

## 14.2.4

- Updates minimum supported SDK version to Flutter 3.19/Dart 3.3.
- Fix GoRouter configuration in `upgrading.md`

## 14.2.3

- Fixes redirect example's signature in `route.dart`.

## 14.2.2

- Adds section for "Stateful nested navigation" to configuration.md.

## 14.2.1

- Makes GoRouterState lookup more robust.

## 14.2.0

- Added proper `redirect` handling for `ShellRoute.$route` and `StatefulShellRoute.$route` for proper redirection handling in case of code generation.

## 14.1.4

- Fixes a URL in `navigation.md`.

## 14.1.3

- Improves the logging of routes when `debugLogDiagnostics` is enabled or `debugKnownRoutes() is called. Explains the position of shell routes in the route tree. Prints the widget name of the routes it is building.

## 14.1.2

- Fixes issue that path parameters are not set when using the `goBranch`.

## 14.1.1

- Fixes correctness of the state provided in the `onExit`.

## 14.1.0

- Adds route redirect to ShellRoutes

## 14.0.2

- Fixes unwanted logs when `hierarchicalLoggingEnabled` was set to `true`.

## 14.0.1

- Updates the redirection documentation for clarity

## 14.0.0

- **BREAKING CHANGE**
  - `GoRouteData`'s `onExit` now takes 2 parameters `BuildContext context, GoRouterState state`.

## 13.2.4

- Updates examples to use uri.path instead of uri.toString() for accessing the current location.

## 13.2.3

- Fixes an issue where deep links without path caused an exception

## 13.2.2

- Fixes restoreRouteInformation issue when GoRouter.optionURLReflectsImperativeAPIs is true and the last match is ShellRouteMatch

## 13.2.1

- Updates minimum supported SDK version to Flutter 3.16/Dart 3.2.
- Fixes memory leaks.

## 13.2.0

- Exposes full `Uri` on `GoRouterState` in `GoRouterRedirect`

## 13.1.0

- Adds `topRoute` to `GoRouterState`
- Adds `lastOrNull` to `RouteMatchList`

## 13.0.1

- Fixes new lint warnings.

## 13.0.0

- Refactors `RouteMatchList` and imperative APIs.
- **BREAKING CHANGE**:
  - RouteMatchList structure changed.
  - Matching logic updated.

## 12.1.3

- Fixes a typo in `navigation.md`.

## 12.1.2

- Fixes an incorrect use of `extends` for Dart 3 compatibility.
- Updates minimum supported SDK version to Flutter 3.10/Dart 3.0.

## 12.1.1

- Retains query parameters during refresh and first redirect.

## 12.1.0

- Adds an ability to add a custom codec for serializing/deserializing extra.

## 12.0.3

- Fixes crashes when dynamically updates routing tables with named routes.

## 12.0.2

- Fixes the problem that pathParameters is null in redirect when the Router is recreated.

## 12.0.1

- Fixes deep-link with no path on cold start.

## 12.0.0

- Adds ability to dynamically update routing table.
- **BREAKING CHANGE**:
  - The function signature of constructor of `RouteConfiguration` is updated.
  - Adds a required `matchedPath` named parameter to `RouteMatch.match`.

## 11.1.4

- Fixes missing parameters in the type-safe routes topic documentation.

## 11.1.3

- Fixes missing state.extra in onException().

## 11.1.2

- Fixes a bug where the known routes and initial route were logged even when `debugLogDiagnostics` was set to `false`.

## 11.1.1

- Fixes a missing `{@end-tool}` doc directive tag for `GoRoute.name`.

## 11.1.0

- Adds optional parameter `overridePlatformDefaultLocation` to override initial route set by platform.

## 11.0.1

- Fixes the Android back button ignores top level route's onExit.

## 11.0.0

- Fixes the GoRouter.goBranch so that it doesn't reset extra to null if extra is not serializable.
- **BREAKING CHANGE**:
  - Updates the function signature of `GoRouteInformationProvider.restore`.
  - Adds `NavigationType.restore` to `NavigationType` enum.

## 10.2.0

- Adds `onExit` to GoRoute.

## 10.1.4

- Fixes RouteInformationParser that does not restore full RouteMatchList if
  the optionURLReflectsImperativeAPIs is set.

## 10.1.3

- Fixes an issue in the documentation that was using `state.queryParameters` instead of `state.uri.queryParameters`.

## 10.1.2

- Adds pub topics to package metadata.

## 10.1.1

- Fixes mapping from `Page` to `RouteMatch`s.
- Updates minimum supported SDK version to Flutter 3.7/Dart 2.19.

## 10.1.0

- Supports setting `requestFocus`.

## 10.0.0

- **BREAKING CHANGE**:
  - Replaces location, queryParameters, and queryParametersAll in GoRouterState with Uri.
  - See [Migrating to 10.0.0](https://flutter.dev/go/go-router-v10-breaking-changes) or
    run `dart fix --apply` to fix the breakages.

## 9.1.1

- Fixes a link in error handling documentation.

## 9.1.0

- Adds the parentNavigatorKey parameter to ShellRouteData and StatefulShellRouteData.
- Fixes a typo in docs for `StatefulShellRoute.indexedStack(...)`.
- Cleans some typos in the documentation and asserts.

## 9.0.3

- Adds helpers for go_router_builder for StatefulShellRoute support

## 9.0.2

- Exposes package-level privates.

## 9.0.1

- Allows redirect only GoRoute to be part of RouteMatchList.

## 9.0.0

- **BREAKING CHANGE**:
  - Removes GoRouter.location. Use GoRouterState.of().location instead.
  - GoRouter does not `extends` ChangeNotifier.
  - [Migration guide](https://flutter.dev/go/go-router-v9-breaking-changes)
- Reduces excessive rebuilds due to inherited look up.

## 8.2.0

- Adds onException to GoRouter constructor.

## 8.1.0

- Adds parent navigator key to ShellRoute and StatefulShellRoute.

## 8.0.5

- Fixes a bug that GoRouterState in top level redirect doesn't contain complete data.

## 8.0.4

- Updates documentations around `GoRouter.of`, `GoRouter.maybeOf`, and `BuildContext` extension.

## 8.0.3

- Makes namedLocation and route name related APIs case sensitive.

## 8.0.2

- Fixes a bug in `debugLogDiagnostics` to support StatefulShellRoute.

## 8.0.1

- Fixes a link for an example in `path` documentation.
  documentation.

## 8.0.0

- **BREAKING CHANGE**:
  - Imperatively pushed GoRoute no longer change URL.
  - Browser backward and forward button respects imperative route operations.
- Refactors the route parsing pipeline.

## 7.1.1

- Removes obsolete null checks on non-nullable values.

## 7.1.0

- Introduces `StatefulShellRoute` to support using separate navigators for child routes as well as preserving state in each navigation tree (flutter/flutter#99124).
- Updates documentation for `pageBuilder` and `builder` fields of `ShellRoute`, to more correctly
  describe the meaning of the child argument in the builder functions.
- Adds support for restorationId to ShellRoute (and StatefulShellRoute).

## 7.0.2

- Fixes `BuildContext` extension method `replaceNamed` to correctly pass `pathParameters` and `queryParameters`.

## 7.0.1

- Adds a workaround for the `dart fix --apply` issue, <https://github.com/dart-lang/sdk/issues/52233>.

## 7.0.0

- **BREAKING CHANGE**:
  - For the below changes, run `dart fix --apply` to automatically migrate your code.
    - `GoRouteState.subloc` has been renamed to `GoRouteState.matchedLocation`.
    - `GoRouteState.params` has been renamed to `GoRouteState.pathParameters`.
    - `GoRouteState.fullpath` has been renamed to `GoRouteState.fullPath`.
    - `GoRouteState.queryParams` has been renamed to `GoRouteState.queryParameters`.
    - `params` and `queryParams` in `GoRouteState.namedLocation` have been renamed to `pathParameters` and `queryParameters`.
    - `params` and `queryParams` in `GoRouter`'s `namedLocation`, `pushNamed`, `pushReplacementNamed`
      `replaceNamed` have been renamed to `pathParameters` and `queryParameters`.
  - For the below changes, please follow the [migration guide](https://docs.google.com/document/d/10Xbpifbs4E-zh6YE5akIO8raJq_m3FIXs6nUGdOspOg).
    - `params` and `queryParams` in `BuildContext`'s `namedLocation`, `pushNamed`, `pushReplacementNamed`
      `replaceNamed` have been renamed to `pathParameters` and `queryParameters`.
- Cleans up API and makes RouteMatchList immutable.

## 6.5.9

- Removes navigator keys from `GoRouteData` and `ShellRouteData`.

## 6.5.8

- Adds name parameter to `TypedGoRoute`

## 6.5.7

- Fixes a bug that go_router would crash if `GoRoute.pageBuilder` depends on `InheritedWidget`s.

## 6.5.6

- Fixes an issue where ShellRoute routes were not logged when debugLogDiagnostic was enabled.

## 6.5.5

- Fixes an issue when popping pageless route would accidentally complete imperative page.

## 6.5.4

- Removes navigator keys from `TypedGoRoute` and `TypedShellRoute`.

## 6.5.3

- Fixes redirect being called with an empty location for unknown routes.

## 6.5.2

- NoTransitionPage now has an instant reverse transition.

## 6.5.1

- Fixes an issue where the params are removed after popping.

## 6.5.0

- Supports returning values on pop.

## 6.4.1

- Adds `initialExtra` to **GoRouter** to pass extra data alongside `initialRoute`.

## 6.4.0

- Adds `replace` method to that replaces the current route with a new one and keeps the same page key. This is useful for when you want to update the query params without changing the page key ([#115902](https://github.com/flutter/flutter/issues/115902)).

## 6.3.0

- Aligns Dart and Flutter SDK constraints.
- Updates compileSdkVersion to 33.
- Updates example app to iOS 11.
- Adds `navigatorKey` to `TypedShellRoute`
- Adds `parentNavigatorKey` to `TypedGoRoute`
- Updates documentation in matching methods.

## 6.2.0

- Exports supertypes in route_data.dart library.

## 6.1.0

- Adds `GoRouter.maybeOf` to get the closest `GoRouter` from the context, if there is any.

## 6.0.10

- Adds helpers for go_router_builder for ShellRoute support

## 6.0.9

- Fixes deprecation message for `GoRouterState.namedLocation`

## 6.0.8

- Adds support for Iterables, Lists and Sets in query params for TypedGoRoute. [#108437](https://github.com/flutter/flutter/issues/108437).

## 6.0.7

- Add observers parameter to the ShellRoute that will be passed to the nested Navigator.
- Use `HeroControllerScope` for nested Navigator that fixes Hero Widgets not animating in Nested Navigator.

## 6.0.6

- Adds `reverseTransitionDuration` to `CustomTransitionPage`

## 6.0.5

- Fixes [unnecessary_null_comparison](https://dart.dev/lints/unnecessary_null_checks) lint warnings.

## 6.0.4

- Fixes redirection info log.

## 6.0.3

- Makes `CustomTransitionPage.barrierDismissible` work

## 6.0.2

- Fixes missing result on pop in go_router extension.

## 6.0.1

- Fixes crashes when popping navigators manually.
- Fixes trailing slashes after pops.

## 6.0.0

- **BREAKING CHANGE**
  - `GoRouteData`'s `redirect` now takes 2 parameters `BuildContext context, GoRouterState state`.
  - `GoRouteData`'s `build` now takes 2 parameters `BuildContext context, GoRouterState state`.
  - `GoRouteData`'s `buildPageWithState` has been removed and replaced by `buildPage` with now takes 2 parameters `BuildContext context, GoRouterState state`.
  - `replace` from `GoRouter`, `GoRouterDelegate` and `GoRouterHelper` has been renamed into `pushReplacement`.
  - `replaceNamed` from `GoRouter`, `GoRouterDelegate` and `GoRouterHelper` has been renamed into `pushReplacementNamed`.
  - [go_router v6 migration guide](https://flutter.dev/go/go-router-v6-breaking-changes)

## 5.2.4

- Fixes crashes when using async redirect.

## 5.2.3

- Fixes link for router configuration and sub-routes

## 5.2.2

- Fixes `pop` and `push` to update urls correctly.

## 5.2.1

- Refactors `GoRouter.pop` to be able to pop individual pageless route with result.

## 5.2.0

- Fixes `GoRouterState.location` and `GoRouterState.param` to return correct value.
- Cleans up `RouteMatch` and `RouteMatchList` API.

## 5.1.10

- Fixes link of ShellRoute in README.

## 5.1.9

- Fixes broken links in documentation.

## 5.1.8

- Fixes a bug with `replace` where it was not generated a new `pageKey`.

## 5.1.7

- Adds documentation using dartdoc topics.

## 5.1.6

- Fixes crashes when multiple `GoRoute`s use the same `parentNavigatorKey` in a route subtree.

## 5.1.5

- Adds migration guide for 5.1.2 to readme.

## 5.1.4

- Fixes the documentation by removing the `ShellRoute`'s non-existing `path` parameter from it.

## 5.1.3

- Allows redirection to return same location.

## 5.1.2

- Adds GoRouterState to context.
- Fixes GoRouter notification.
- Updates README.
- Removes dynamic calls in examples.
- **BREAKING CHANGE**
  - Remove NavigatorObserver mixin from GoRouter

## 5.1.1

- Removes DebugGoRouteInformation.

## 5.1.0

- Removes urlPathStrategy completely, which should have been done in v5.0.0 but some code remained mistakenly.

## 5.0.5

- Fixes issue where asserts in popRoute were preventing the app from
  exiting on Android.

## 5.0.4

- Fixes a bug in ShellRoute example where NavigationBar might lose current index in a nested routes.

## 5.0.3

- Changes examples to use the routerConfig API

## 5.0.2

- Fixes missing code example in ShellRoute documentation.

## 5.0.1

- Allows ShellRoute to have child ShellRoutes (flutter/flutter#111981)

## 5.0.0

- Fixes a bug where intermediate route redirect methods are not called.
- GoRouter implements the RouterConfig interface, allowing you to call
  MaterialApp.router(routerConfig: \_myGoRouter) instead of passing
  the RouterDelegate, RouteInformationParser, and RouteInformationProvider
  fields.
- **BREAKING CHANGE**
  - Redesigns redirection API, adds asynchronous feature, and adds build context to redirect.
  - Removes GoRouterRefreshStream
  - Removes navigatorBuilder
  - Removes urlPathStrategy
- [go_router v5 migration guide](https://flutter.dev/go/go-router-v5-breaking-changes)

## 4.5.1

- Fixes an issue where GoRoutes with only a redirect were disallowed
  (flutter/flutter#111763)

## 4.5.0

- Adds ShellRoute for nested navigation support (flutter/flutter#99126)
- Adds `parentNavigatorKey` to GoRoute, which specifies the Navigator to place that
  route's Page onto.

## 4.4.1

- Fix an issue where disabling logging clears the root logger's listeners

## 4.4.0

- Adds `buildPageWithState` to `GoRouteData`.
- `GoRouteData.buildPage` is now deprecated in favor of `GoRouteData.buildPageWithState`.

## 4.3.0

- Allows `Map<String, dynamic>` maps as `queryParams` of `goNamed`, `replacedName`, `pushNamed` and `namedLocation`.

## 4.2.9

- Updates text theme parameters to avoid deprecation issues.
- Fixes lint warnings.

## 4.2.8

- Fixes namedLocation to return URIs without trailing question marks if there are no query parameters.
- Cleans up examples.

## 4.2.7

- Updates README.

## 4.2.6

- Fixes rendering issues in the README.

## 4.2.5

- Fixes a bug where calling extra parameter is always null in route level redirect callback

## 4.2.4

- Rewrites Readme and examples.

## 4.2.3

- Fixes a bug where the ValueKey to be the same when a page was pushed multiple times.

## 4.2.2

- Fixes a bug where go_router_builder wasn't detecting annotations.

## 4.2.1

- Refactors internal classes and methods

## 4.2.0

- Adds `void replace()` and `replaceNamed` to `GoRouterDelegate`, `GoRouter` and `GoRouterHelper`.

## 4.1.1

- Fixes a bug where calling namedLocation does not support case-insensitive way.

## 4.1.0

- Adds `bool canPop()` to `GoRouterDelegate`, `GoRouter` and `GoRouterHelper`.

## 4.0.3

- Adds missed popping log.

## 4.0.2

- Fixes a bug where initialLocation took precedence over deep-links

## 4.0.1

- Fixes a bug where calling setLogging(false) does not clear listeners.

## 4.0.0

- Refactors go_router and introduces `GoRouteInformationProvider`. [Migration Doc](https://flutter.dev/go/go-router-v4-breaking-changes)
- Fixes a bug where top-level routes are skipped if another contains child routes.

## 3.1.1

- Uses first match if there are more than one route to match. [ [#99833](https://github.com/flutter/flutter/issues/99833)

## 3.1.0

- Adds `GoRouteData` and `TypedGoRoute` to support `package:go_router_builder`.

## 3.0.7

- Refactors runtime checks to assertions.

## 3.0.6

- Exports inherited_go_router.dart file.

## 3.0.5

- Add `dispatchNotification` method to `DummyBuildContext` in tests. (This
  should be revisited when Flutter `2.11.0` becomes stable.)
- Improves code coverage.
- `GoRoute` now warns about requiring either `pageBuilder`, `builder` or `redirect` at instantiation.

## 3.0.4

- Updates code for stricter analysis options.

## 3.0.3

- Fixes a bug where params disappear when pushing a nested route.

## 3.0.2

- Moves source to flutter/packages.
- Removes all_lint_rules_community and path_to_regexp dependencies.

## 3.0.1

- pass along the error to the `navigatorBuilder` to allow for different
  implementations based on the presence of an error

## 3.0.0

- breaking change: added `GoRouterState` to `navigatorBuilder` function
- breaking change: removed `BuildContext` from `GoRouter.pop()` to remove the
  need to use `context` parameter when calling the `GoRouter` API; this changes
  the behavior of `GoRouter.pop()` to only pop what's on the `GoRouter` page
  stack and no longer calls `Navigator.pop()`
- new [Migrating to 3.0 section](https://gorouter.dev/migrating-to-30) in the
  docs to describe the details of the breaking changes and how to update your
  code
- added a new [shared
  scaffold](https://github.com/csells/go_router/blob/main/go_router/example/lib/shared_scaffold.dart)
  sample to show how to use the `navigatorBuilder` function to build a custom
  shared scaffold outside of the animations provided by go_router

## 2.5.7

- [PR 262](https://github.com/csells/go_router/pull/262): add support for
  `Router.neglect`; thanks to [nullrocket](https://github.com/nullrocket)!
- [PR 265](https://github.com/csells/go_router/pull/265): add Japanese
  translation of the docs; thanks to
  [toshi-kuji](https://github.com/toshi-kuji)! Unfortunately I don't yet know
  how to properly display them via docs.page, but [I'm working on
  it](https://github.com/csells/go_router/issues/266)
- updated the examples using the `from` query parameter to be completely
  self-contained in the `redirect` function, simplifying usage
- updated the async data example to be simpler
- added a new example to show how to implement a loading page
- renamed the navigator_integration example to user_input and added an example
  of `WillPopScope` for go_router apps

## 2.5.6

- [PR 259](https://github.com/csells/go_router/pull/259): remove a hack for
  notifying the router of a route change that was no longer needed; thanks to
  [nullrocket](https://github.com/nullrocket)!
- improved async example to handle the case that the data has been returned but
  the page is no longer there by checking the `mounted` property of the screen

## 2.5.5

- updated implementation to use logging package for debug diagnostics; thanks
  to [johnpryan](https://github.com/johnpryan)

## 2.5.4

- fixed up the `GoRouterRefreshStream` implementation with an export, an example
  and some docs

## 2.5.3

- added `GoRouterRefreshStream` from
  [jopmiddelkamp](https://github.com/jopmiddelkamp) to easily map from a
  `Stream` to a `Listenable` for use with `refreshListenable`; very useful when
  combined with stream-based state management like
  [flutter_bloc](https://pub.dev/packages/flutter_bloc)
- dartdocs fixups from [mehade369](https://github.com/mehade369)
- example link fixes from [ben-milanko](https://github.com/ben-milanko)

## 2.5.2

- pass additional information to the `NavigatorObserver` via default args to
  `MaterialPage`, etc.

## 2.5.1

- [fix 205](https://github.com/csells/go_router/issues/205): hack around a
  failed assertion in Flutter when using `Duration.zero` in the
  `NoTransitionPage`

## 2.5.0

- provide default implementation of `GoRoute.pageBuilder` to provide a simpler
  way to build pages via the `GoRouter.build` method
- provide default implementation of `GoRouter.errorPageBuilder` to provide a
  simpler way to build error pages via the `GoRouter.errorBuilder` method
- provide default implementation of `GoRouter.errorBuilder` to provide an error
  page without the need to implement a custom error page builder
- new [Migrating to 2.5 section](https://gorouter.dev/migrating-to-25) in
  the docs to show how to take advantage of the new `builder` and default error
  page builder
- removed `launch.json` as VSCode-centric and unnecessary for discovery or easy
  launching
- added a [new custom error screen
  sample](https://github.com/csells/go_router/blob/master/example/lib/error_screen.dart)
- added a [new WidgetsApp
  sample](https://github.com/csells/go_router/blob/master/example/lib/widgets_app.dart)
- added a new `NoTransitionPage` class
- updated docs to explain why the browser's Back button doesn't work
  with the `extra` param
- updated README to point to new docs site: [gorouter.dev](https://gorouter.dev)

## 2.3.1

- [fix 191](https://github.com/csells/go_router/issues/191): handle several
  kinds of trailing / in the location, e.g. `/foo/` should be the same as `/foo`

## 2.3.0

- fix a misleading error message when using redirect functions with sub-routes

## 2.2.9

- [fix 182](https://github.com/csells/go_router/issues/182): fixes a regression
  in the nested navigation caused by the fix for
  [#163](https://github.com/csells/go_router/issues/163); thanks to
  [lulupointu](https://github.com/lulupointu) for the fix!

## 2.2.8

- reformatted CHANGELOG file; lets see if pub.dev is still ok with it...
- staged an in-progress doc site at <https://docs.page/csells/go_router>
- tightened up a test that was silently failing
- fixed a bug that dropped parent params in sub-route redirects

## 2.2.7

- [fix 163](https://github.com/csells/go_router/issues/163): avoids unnecessary
  page rebuilds
- [fix 139](https://github.com/csells/go_router/issues/139): avoids unnecessary
  page flashes on deep linking
- [fix 158](https://github.com/csells/go_router/issues/158): shows exception
  info in the debug output even during a top-level redirect coded w/ an
  anonymous function, i.e. what the samples all use
- [fix 151](https://github.com/csells/go_router/issues/151): exposes
  `Navigator.pop()` via `GoRouter.pop()` to make it easy to find

## 2.2.6

- [fix 127](https://github.com/csells/go_router/issues/127): updated the docs
  to add a video overview of the project for people that prefer that media style
  over long-form text when approaching a new topic
- [fix 108](https://github.com/csells/go_router/issues/108): updated the
  description of the `state` parameter to clarfy that not all properties will be
  set at every usage

## 2.2.5

- [fix 120 again](https://github.com/csells/go_router/issues/120): found the bug
  in my tests that was masking the real bug; changed two characters to implement
  the actual fix (sigh)

## 2.2.4

- [fix 116](https://github.com/csells/go_router/issues/116): work-around for
  auto-import of the `context.go` family of extension methods

## 2.2.3

- [fix 132](https://github.com/csells/go_router/issues/132): route names are
  stored as case insensitive and are now matched in a case insensitive manner

## 2.2.2

- [fix 120](https://github.com/csells/go_router/issues/120): encoding and
  decoding of params and query params

## 2.2.1

- [fix 114](https://github.com/csells/go_router/issues/114): give a better error
  message when the `GoRouter` isn't found in the widget tree via
  `GoRouter.of(context)`; thanks [aoatmon](https://github.com/aoatmon) for the
  [excellent bug report](https://github.com/csells/go_router/issues/114)!

## 2.2.0

- added a new [`navigatorBuilder`](https://gorouter.dev/navigator-builder) argument to the
  `GoRouter` constructor; thanks to [andyduke](https://github.com/andyduke)!
- also from [andyduke](https://github.com/andyduke) is an update to
  improve state restoration
- refactor from [kevmoo](https://github.com/kevmoo) for easier maintenance
- added a new [Navigator Integration section of the
  docs](https://gorouter.dev/navigator-integration)

## 2.1.2

- [fix 61 again](https://github.com/csells/go_router/issues/61): enable images
  and file links to work on pub.dev/documentation
- [fix 62](https://github.com/csells/go_router/issues/62) re-tested; fixed w/
  earlier Android system Back button fix (using navigation key)
- [fix 91](https://github.com/csells/go_router/issues/91): fix a regression w/
  the `errorPageBuilder`
- [fix 92](https://github.com/csells/go_router/issues/92): fix an edge case w/
  named sub-routes
- [fix 89](https://github.com/csells/go_router/issues/89): enable queryParams
  and extra object param w/ `push`
- refactored tests for greater coverage and fewer methods `@visibleForTesting`

## 2.1.1

- [fix 86](https://github.com/csells/go_router/issues/86): add `name` to
  `GoRouterState` to complete support for URI-free navigation knowledge in your
  code
- [fix 83](https://github.com/csells/go_router/issues/83): fix for `null`
  `extra` object

## 2.1.0

- [fix 80](https://github.com/csells/go_router/issues/80): adding a redirect
  limit to catch too many redirects error
- [fix 81](https://github.com/csells/go_router/issues/81): allow an `extra`
  object to pass through for navigation

## 2.0.1

- add badges to the README and codecov to the GitHub commit action; thanks to
  [rydmike](https://github.com/rydmike) for both

## 2.0.0

- BREAKING CHANGE and [fix #50](https://github.com/csells/go_router/issues/50):
  split `params` into `params` and `queryParams`; see the [Migrating to 2.0
  section of the docs](https://gorouter.dev/migrating-to-20)
  for instructions on how to migrate your code from 1.x to 2.0
- [fix 69](https://github.com/csells/go_router/issues/69): exposed named
  location lookup for redirection
- [fix 57](https://github.com/csells/go_router/issues/57): enable the Android
  system Back button to behave exactly like the `AppBar` Back button; thanks to
  [SunlightBro](https://github.com/SunlightBro) for the one-line fix that I had
  no idea about until he pointed it out
- [fix 59](https://github.com/csells/go_router/issues/59): add query params to
  top-level redirect
- [fix 44](https://github.com/csells/go_router/issues/44): show how to use the
  `AutomaticKeepAliveClientMixin` with nested navigation to keep widget state
  between navigations; thanks to [rydmike](https://github.com/rydmike) for this
  update

## 1.1.3

- enable case-insensitive path matching while still preserving path and query
  parameter cases
- change a lifetime of habit to sort constructors first as per
  [sort_constructors_first](https://dart.dev/lints/sort_constructors_first).
  Thanks for the PR, [Abhishek01039](https://github.com/Abhishek01039)!
- set the initial transition example route to `/none` to make pushing the 'fade
  transition' button on the first run through more fun
- fixed an error in the async data example

## 1.1.2

- Thanks, Mikes!
  - updated dartdocs from [rydmike](https://github.com/rydmike)
  - also shoutout to [https://github.com/Salakar](https://github.com/Salakar)
    for the CI action on GitHub
  - this is turning into a real community effort...

## 1.1.1

- now showing routing exceptions in the debug log
- updated the docs to make it clear that it will be called until it returns
  `null`

## 1.1.0

- added support `NavigatorObserver` objects to receive change notifications

## 1.0.1

- docs updates based on user feedback for clarity
- fix for setting URL path strategy in `main()`
- fix for `push()` disables `AppBar` Back button

## 1.0.0

- updated version for initial release
- some renaming for clarify and consistency with transitions
  - `GoRoute.builder` => `GoRoute.pageBuilder`
  - `GoRoute.error` => `GoRoute.errorPageBuilder`
- added diagnostic logging for `push` and `pushNamed`

## 0.9.6

- added support for `push` as well as `go`
- added 'none' to transitions example app
- updated animation example to use no transition and added an animated gif to
  the docs

## 0.9.5

- added support for custom transitions between routes

## 0.9.4

- updated API docs
- updated docs for `GoRouterState`

## 0.9.3

- updated API docs

## 0.9.2

- updated named route lookup to O(1)
- updated diagnostics output to show known named routes

## 0.9.1

- updated diagnostics output to show named route lookup
- docs updates

## 0.9.0

- added support for named routes

## 0.8.8

- fix to make `GoRouter` notify on pop

## 0.8.7

- made `GoRouter` a `ChangeNotifier` so you can listen for `location` changes

## 0.8.6

- books sample bug fix

## 0.8.5

- added Cupertino sample
- added example of async data lookup

## 0.8.4

- added state restoration sample

## 0.8.3

- changed `debugOutputFullPaths` to `debugLogDiagnostics` and added add'l
  debugging logging
- parameterized redirect

## 0.8.2

- updated docs for `Link` widget support

## 0.8.1

- added Books sample; fixed some issues it revealed

## 0.8.0

- breaking build to refactor the API for simplicity and capability
- move to fixed routing from conditional routing; simplies API, allows for
  redirection at the route level and there scenario was sketchy anyway
- add redirection at the route level
- replace guard objects w/ redirect functions
- add `refresh` method and `refreshListener`
- removed `.builder` ctor from `GoRouter` (not reasonable to implement)
- add Dynamic linking section to the docs
- replaced Books sample with Nested Navigation sample
- add ability to dump the known full paths to your routes to debug output

## 0.7.1

- update to pageKey to take sub-routes into account

## 0.7.0

- BREAK: rename `pattern` to `path` for consistency w/ other routers in the
  world
- added the `GoRouterLoginGuard` for the common redirect-to-login-page pattern

## 0.6.2

- fixed issue showing home page for a second before redirecting (if needed)

## 0.6.1

- added `GoRouterState.pageKey`
- removed `cupertino_icons` from main `pubspec.yaml`

## 0.6.0

- refactor to support sub-routes to build a stack of pages instead of matching
  multiple routes
- added unit tests for building the stack of pages
- some renaming of the types, e.g. `Four04Page` and `FamiliesPage` to
  `ErrorPage` and `HomePage` respectively
- fix a redirection error shown in the debug output

## 0.5.2

- add `urlPathStrategy` argument to `GoRouter` ctor

## 0.5.1

- docs and description updates

## 0.5.0

- moved redirect to top-level instead of per route for simplicity

## 0.4.1

- fixed CHANGELOG formatting

## 0.4.0

- bundled various useful route handling variables into the `GoRouterState` for
  use when building pages and error pages
- updated URL Strategy section of docs to reference `flutter run`

## 0.3.2

- formatting update to appease the pub.dev gods...

## 0.3.1

- updated the CHANGELOG

## 0.3.0

- moved redirection into a `GoRoute` ctor arg
- forgot to update the CHANGELOG

## 0.2.3

- move outstanding issues to [issue
  tracker](https://github.com/csells/go_router/issues)
- added explanation of Deep Linking to docs
- reformatting to meet pub.dev scoring guidelines

## 0.2.2

- docs updates

## 0.2.1

- messing with the CHANGELOG formatting

## 0.2.0

- initial useful release
- added support for declarative routes via `GoRoute` instances
- added support for imperative routing via `GoRoute.builder`
- added support for setting the URL path strategy
- added support for conditional routing
- added support for redirection
- added support for optional query parameters as well as positional parameters
  in route names

## 0.1.0

- squatting on the package name (I'm not too proud to admit it)







 
