-
Notifications
You must be signed in to change notification settings - Fork 3k
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] Fix: Consistent PopScope Handling on Root Routes issue #140869 #8045
Conversation
It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix? Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group. |
9640161
to
0ac53c2
Compare
Fixed WillPopScope/PopScope doesn't trigger with back button navigation on root screens. Added a test for PopScope, and fixed some test failures in the delegate_test.
Hi @chunhtai, This PR is ready for your review. All checks have passed, and there are no issues reported. When you have a moment, could you please take a look and provide an approval if everything looks good? Your review is the last step for merging. Thank you! |
can you guys review this, so we can get this issue fixed |
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.
excellent fix, thank you!
You’re welcome, @hannah-hyj! I’m glad the fix meets your expectations. @chunhtai, could you please take a moment to review this pull request? It’s passed all checks and is ready for the final review. |
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
Co-authored-by: chunhtai <[email protected]>
* main: (64 commits) [quick_actions_plaform_interface] add localizedSubtitle (flutter#8112) [tools] Don't check license of generated Swift package (flutter#8137) Roll Flutter from 8536b96ebb3e to 93d772c5cdd8 (37 revisions) (flutter#8147) [go_router] Fix: Consistent PopScope Handling on Root Routes issue #140869 (flutter#8045) [in_app_purchase_storekit] fix price displayed with wrong precision (flutter#8127) [pigeon] Removes the `@protected` annotation from the InstanceManager field of the `PigeonInternalProxyApiBaseClass` (flutter#8125) [google_maps_flutter] Use structured Pigeon data on iOS (flutter#8142) [vector_graphics] handle errors from bytes loader (flutter#8080) [flutter_svg] Fix SvgNetworkLoader not closing internal http client (flutter#8126) [video_player_avfoundation] send video load failure even when eventsink was initialized late (flutter#7194) [flutter_markdown] enable Wasm support (flutter#8120) Reverts "[url_launcher] Add Swift Package Manager integration to example app (flutter#8128)" (flutter#8136) [url_launcher] Add Swift Package Manager integration to example app (flutter#8128) [pigeon] Enable example app build in CI (flutter#8119) [in_app_purchase_storekit] disallow ios versions lower than supported from enabling storekit (flutter#8110) [interactive_media_ads]: Bump com.google.ads.interactivemedia.v3:interactivemedia from 3.35.1 to 3.36.0 in /packages/interactive_media_ads/android (flutter#8046) [interactive_media_ads]: Bump androidx.annotation:annotation from 1.8.2 to 1.9.1 in /packages/interactive_media_ads/android (flutter#7980) [webview_flutter_android] Updates plugin to use `ProxyApis`s (flutter#7794) [interactive_media_ads] Adds support to define parameters that control the rendering of ads (flutter#8057) Roll Flutter from b3818f6b5979 to 8536b96ebb3e (22 revisions) (flutter#8124) ... # Conflicts: # packages/quick_actions/quick_actions_platform_interface/CHANGELOG.md
flutter/packages@913b99e...9203213 2024-11-22 [email protected] Reland "[url_launcher] Add Swift Package Manager integration to example app" (flutter/packages#8148) 2024-11-22 [email protected] [webview_flutter_wkwebview] Webkit webview controller multiple registration fix (flutter/packages#8078) 2024-11-22 [email protected] [quick_actions_plaform_interface] add localizedSubtitle (flutter/packages#8112) 2024-11-22 [email protected] [tools] Don't check license of generated Swift package (flutter/packages#8137) 2024-11-21 [email protected] Roll Flutter from 8536b96 to 93d772c (37 revisions) (flutter/packages#8147) 2024-11-21 [email protected] [go_router] Fix: Consistent PopScope Handling on Root Routes issue #140869 (flutter/packages#8045) 2024-11-21 [email protected] [in_app_purchase_storekit] fix price displayed with wrong precision (flutter/packages#8127) 2024-11-21 [email protected] [pigeon] Removes the `@protected` annotation from the InstanceManager field of the `PigeonInternalProxyApiBaseClass` (flutter/packages#8125) 2024-11-21 [email protected] [google_maps_flutter] Use structured Pigeon data on iOS (flutter/packages#8142) 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
Description:
This PR addresses issue #140869 related to back button handling on root routes in
GoRouterDelegate
. The current_findCurrentNavigator()
function only assignsNavigatorState
when it can pop, which preventsPopScope
and custom back button logic from triggering on root routes, especially on Android. Additionally, theonExit
callbacks on routes requiring custom exit handling are affected.What This PR Changes:
Modification of
_findCurrentNavigator()
:canPop
check, settingstate = navigatorKey.currentState;
directly to ensureNavigatorState
is always non-null, allowing consistentPopScope
handling on root routes.Adjustment of
popRoute()
to PreserveonExit
Logic:popRoute()
to callmaybePop()
unconditionally to make surePopScope
can handle back button actions on root pages.onExit
logic inpopRoute()
ifmaybePop()
does not handle the pop, this way, any route-specific exit callbacks are still functional.Impact:
PopScope
and back button handling on root pages without affecting nested routes or shell routes.onExit
Callback Functionality:onExit
is invoked whenmaybePop()
doesn’t handle the pop, preserving custom exit behaviors.Pre-launch Checklist
dart format
.)[go_router]
pubspec.yaml
with an appropriate new version according to the [pub versioning philosophy], or this PR is [exempt from version changes].CHANGELOG.md
to add a description of the change, [following repository CHANGELOG style], or this PR is [exempt from CHANGELOG changes].///
).