-
Notifications
You must be signed in to change notification settings - Fork 3.4k
[go_router]: Add RelativeGoRouteData
and TypedRelativeGoRoute
#9732
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[go_router]: Add RelativeGoRouteData
and TypedRelativeGoRoute
#9732
Conversation
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces type-safe relative routes by adding RelativeGoRouteData
and TypedRelativeGoRoute
. The changes are well-tested. My main feedback concerns significant code duplication in the new RelativeGoRouteData
class, which poses a maintainability risk. I've also pointed out a minor bug and some areas for improvement in the new tests.
d59d222
to
f778d2e
Compare
f778d2e
to
e8c8f2b
Compare
I am curious how this would work with deeplinking, or whether it would even be possible to support it |
Deep-linking should be fully supported! If you have a use case you want to test before this PR is merged, add the following to your
|
8224a3c
to
2777140
Compare
c69f5a8
to
1dcb3ec
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
9b3cad8
to
56ddbea
Compare
Adds support for TypedRelativeGoRoute. Builds on #9732 Continuation of #8476 by @ThangVuNguyenViet Compared to #8476, the approach taken in this PR avoids breaking changes and creates a separate RouteData subclass instead of extending GoRouteData. The approach increases flexibility and avoids extending behavior that might not make sense for a relative route. Fully resolves flutter/flutter#108177. ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
flutter/packages@5c52c55...953cae0 2025-08-19 [email protected] Add com.android.tools.build:gradle to dependabot gradle-plugin group (flutter/packages#9848) 2025-08-19 [email protected] [flutter_migrate] Remove source (flutter/packages#9847) 2025-08-18 [email protected] [go_router]: Add `RelativeGoRouteData` and `TypedRelativeGoRoute` (flutter/packages#9732) 2025-08-18 [email protected] Roll Flutter (stable) from edada7c to 20f8274 (1474 revisions) (flutter/packages#9837) 2025-08-18 [email protected] Roll Flutter from b3fb4c7 to 2265d94 (7 revisions) (flutter/packages#9845) 2025-08-18 [email protected] Disable SwiftPM for `xcode-analyze` (flutter/packages#9666) 2025-08-17 [email protected] Roll Flutter from 0a2906b to b3fb4c7 (5 revisions) (flutter/packages#9840) 2025-08-16 [email protected] Update repo for 3.35 stable release (flutter/packages#9816) 2025-08-16 [email protected] Roll Flutter from 52af7a5 to 0a2906b (16 revisions) (flutter/packages#9836) 2025-08-16 [email protected] [image_picker] Updates min SDK to 3.29 (flutter/packages#9830) 2025-08-16 [email protected] [image_picker] Add the ability to pick multiple videos (flutter/packages#9775) 2025-08-16 [email protected] [image_picker] Add the ability to pick multiple videos - platform implementations (flutter/packages#9818) 2025-08-16 [email protected] [various] Updates min SDK for third_party/packages to 3.29 (flutter/packages#9819) 2025-08-16 [email protected] [vector_graphics] Updates min SDK to 3.29 (flutter/packages#9820) 2025-08-16 [email protected] [google_maps_flutter] Updates min SDK to 3.29 (flutter/packages#9821) 2025-08-16 [email protected] [video_player] Updates min SDK to 3.29 (flutter/packages#9826) 2025-08-15 [email protected] [shared_preferences] Updates min SDK to 3.29 (flutter/packages#9829) 2025-08-15 [email protected] [image_picker_ios] Add photo to simulator Photos library during test (flutter/packages#9759) 2025-08-15 [email protected] [interactive_media_ads] Updates `README` with information about enabling desugaring on Android (flutter/packages#9790) 2025-08-15 [email protected] [in_app_purchase] Updates min SDK to 3.29 (flutter/packages#9825) 2025-08-15 [email protected] Roll Flutter from f4334d2 to 52af7a5 (29 revisions) (flutter/packages#9832) 2025-08-15 [email protected] [go_router] Update generated output format (flutter/packages#9817) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…utter#9732) Adds `RelativeGoRouteData` and `TypedRelativeGoRoute` to support type-safe relative routes. Foundation for flutter#9749 which adds relative route support in `go_router_builder`. Continuation of flutter#8476 by @ThangVuNguyenViet Compared to flutter#8476, the approach taken in this PR avoids breaking changes and creates a separate `RouteData` subclass instead of extending `GoRouteData`. The approach increases flexibility and avoids extending behavior that might not make sense for a relative route. Necessary to fully resolve flutter/flutter#108177. ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Adds support for TypedRelativeGoRoute. Builds on flutter#9732 Continuation of flutter#8476 by @ThangVuNguyenViet Compared to flutter#8476, the approach taken in this PR avoids breaking changes and creates a separate RouteData subclass instead of extending GoRouteData. The approach increases flexibility and avoids extending behavior that might not make sense for a relative route. Fully resolves flutter/flutter#108177. ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Adds
RelativeGoRouteData
andTypedRelativeGoRoute
to support type-safe relative routes.Foundation for #9749 which adds relative route support in
go_router_builder
.Continuation of #8476 by @ThangVuNguyenViet
Compared to #8476, the approach taken in this PR avoids breaking changes and creates a separate
RouteData
subclass instead of extendingGoRouteData
. The approach increases flexibility and avoids extending behavior that might not make sense for a relative route.Necessary to fully resolve flutter/flutter#108177.
Pre-Review Checklist
[shared_preferences]
pubspec.yaml
with an appropriate new version according to the pub versioning philosophy, or I have commented below to indicate which version change exemption this PR falls under1.CHANGELOG.md
to add a description of the change, following repository CHANGELOG style, or I have commented below to indicate which CHANGELOG exemption this PR falls under1.///
).If you need help, consider asking for advice on the #hackers-new channel on Discord.
Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the
gemini-code-assist
bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.Footnotes
Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. ↩ ↩2 ↩3