-
Notifications
You must be signed in to change notification settings - Fork 29.1k
[web] Popping a nameless route should preserve the correct route name #173652
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
Conversation
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 addresses an issue where popping a nameless route on the web did not preserve the URL of the previous named route. The fix involves introducing _currentRouteName
to correctly track and restore the route name. The implementation is solid, simplifying the existing logic and adding a specific test case to validate the correction. The changes are well-executed and effectively resolve the bug.
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, just some minor comment
final String path = currentPath; | ||
if (!_isFlutterEntry(domWindow.history.state)) { | ||
_currentRouteName = path; |
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.
_currentRouteName = currentPath
@@ -303,11 +313,11 @@ class SingleEntryBrowserHistory extends BrowserHistory { | |||
@override | |||
void setRouteName(String? routeName, {Object? state, bool replace = false}) { | |||
if (urlStrategy != null) { | |||
_setupFlutterEntry(urlStrategy!, replace: true, path: routeName); | |||
_currentRouteName = routeName ?? currentPath; |
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.
i think routeName
will never be null given since routeUpdated
method has been deprecated for ages.
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.
Do you think it's safe to remove the entire routeUpdated
handler:
flutter/engine/src/flutter/lib/web_ui/lib/src/engine/window.dart
Lines 628 to 632 in 1eb2f68
case 'routeUpdated': // deprecated | |
assert(arguments != null); | |
await _useSingleEntryBrowserHistory(); | |
browserHistory.setRouteName(arguments!.tryString('routeName')); | |
return true; |
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.
yes, I think so, it has not been used since we have introduced Router. I forgot to clean it up
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.
Ok, I'll do this cleanup in a follow up PR.
@@ -293,7 +295,7 @@ void testMain() { | |||
expect(spy.messages[0].methodName, 'pushRoute'); | |||
expect(spy.messages[0].methodArguments, '/page3'); | |||
spy.messages.clear(); | |||
// 2. The framework sends a `routePushed` platform message. | |||
// 2. The framework sends a `routeUpdated` platform message. |
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.
not something need to be address in this pr, routeUpdated is not used by framework for a long time now
await implicitView.debugInitializeHistory(strategy, useSingle: true); | ||
|
||
// Go to a named route. | ||
await routeUpdated('/named-route'); |
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.
let's use routeInformationUpdated for accuracy
flutter/flutter@34c2a3b...f4334d2 2025-08-14 engine-flutter-autoroll@skia.org Roll Dart SDK from 9b4691f35139 to 214a7f829913 (2 revisions) (flutter/flutter#173769) 2025-08-14 engine-flutter-autoroll@skia.org Roll Skia from b3e86773dae1 to dca5f05fee87 (4 revisions) (flutter/flutter#173763) 2025-08-14 engine-flutter-autoroll@skia.org Roll Dart SDK from 73153bdc1459 to 9b4691f35139 (3 revisions) (flutter/flutter#173755) 2025-08-14 engine-flutter-autoroll@skia.org Roll Skia from 5852eddfd404 to b3e86773dae1 (1 revision) (flutter/flutter#173750) 2025-08-14 azat24680@gmail.com Allow empty initial time when using text input mode in showTimePicker dialog (flutter/flutter#172847) 2025-08-13 engine-flutter-autoroll@skia.org Roll Skia from 525e2bf80559 to 5852eddfd404 (2 revisions) (flutter/flutter#173740) 2025-08-13 mdebbar@google.com [web] Popping a nameless route should preserve the correct route name (flutter/flutter#173652) 2025-08-13 ahmedsameha1@gmail.com Make sure that a ChoiceChip doesn't crash in 0x0 environment (flutter/flutter#173322) 2025-08-13 bkonyi@google.com [ Tool ] Fix missing import for widget_preview.dart (flutter/flutter#173731) 2025-08-13 engine-flutter-autoroll@skia.org Roll Skia from f7fdda3cd0e6 to 525e2bf80559 (7 revisions) (flutter/flutter#173727) 2025-08-13 matanlurey@users.noreply.github.com Do not include `:unittests` unless `enable_unittests` (flutter/flutter#173729) 2025-08-13 engine-flutter-autoroll@skia.org Roll Packages from 08a9b2c to 6cb9113 (1 revision) (flutter/flutter#173726) 2025-08-13 56157868+albinpk@users.noreply.github.com fix: selected date decorator renders outside PageView in `DatePickerDialog` dialog (flutter/flutter#171718) 2025-08-13 bkonyi@google.com [ Widget Preview ] Add `--machine` mode (flutter/flutter#173654) 2025-08-13 ahmedsameha1@gmail.com Make sure that a Chip doesn't crash in 0x0 environment (flutter/flutter#173245) 2025-08-13 returnymgstokh@icloud.com feat: Cupertino sheet implement upward stretch on full sheet (flutter/flutter#168547) 2025-08-13 131446187+TheLastFlame@users.noreply.github.com Fix visual overlap of transparent routes barrier when using FadeForwardsPageTransitionsBuilder (flutter/flutter#167032) 2025-08-13 32538273+ValentinVignal@users.noreply.github.com Fix `ChipThemeData` lerp for `BorderSide` (flutter/flutter#173160) 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 Please CC louisehsu@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: 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
…3782) This is a follow up to flutter#173652 Closes flutter#50836
…r#9807) flutter/flutter@34c2a3b...f4334d2 2025-08-14 engine-flutter-autoroll@skia.org Roll Dart SDK from 9b4691f35139 to 214a7f829913 (2 revisions) (flutter/flutter#173769) 2025-08-14 engine-flutter-autoroll@skia.org Roll Skia from b3e86773dae1 to dca5f05fee87 (4 revisions) (flutter/flutter#173763) 2025-08-14 engine-flutter-autoroll@skia.org Roll Dart SDK from 73153bdc1459 to 9b4691f35139 (3 revisions) (flutter/flutter#173755) 2025-08-14 engine-flutter-autoroll@skia.org Roll Skia from 5852eddfd404 to b3e86773dae1 (1 revision) (flutter/flutter#173750) 2025-08-14 azat24680@gmail.com Allow empty initial time when using text input mode in showTimePicker dialog (flutter/flutter#172847) 2025-08-13 engine-flutter-autoroll@skia.org Roll Skia from 525e2bf80559 to 5852eddfd404 (2 revisions) (flutter/flutter#173740) 2025-08-13 mdebbar@google.com [web] Popping a nameless route should preserve the correct route name (flutter/flutter#173652) 2025-08-13 ahmedsameha1@gmail.com Make sure that a ChoiceChip doesn't crash in 0x0 environment (flutter/flutter#173322) 2025-08-13 bkonyi@google.com [ Tool ] Fix missing import for widget_preview.dart (flutter/flutter#173731) 2025-08-13 engine-flutter-autoroll@skia.org Roll Skia from f7fdda3cd0e6 to 525e2bf80559 (7 revisions) (flutter/flutter#173727) 2025-08-13 matanlurey@users.noreply.github.com Do not include `:unittests` unless `enable_unittests` (flutter/flutter#173729) 2025-08-13 engine-flutter-autoroll@skia.org Roll Packages from 08a9b2c to 6cb9113 (1 revision) (flutter/flutter#173726) 2025-08-13 56157868+albinpk@users.noreply.github.com fix: selected date decorator renders outside PageView in `DatePickerDialog` dialog (flutter/flutter#171718) 2025-08-13 bkonyi@google.com [ Widget Preview ] Add `--machine` mode (flutter/flutter#173654) 2025-08-13 ahmedsameha1@gmail.com Make sure that a Chip doesn't crash in 0x0 environment (flutter/flutter#173245) 2025-08-13 returnymgstokh@icloud.com feat: Cupertino sheet implement upward stretch on full sheet (flutter/flutter#168547) 2025-08-13 131446187+TheLastFlame@users.noreply.github.com Fix visual overlap of transparent routes barrier when using FadeForwardsPageTransitionsBuilder (flutter/flutter#167032) 2025-08-13 32538273+ValentinVignal@users.noreply.github.com Fix `ChipThemeData` lerp for `BorderSide` (flutter/flutter#173160) 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 Please CC louisehsu@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: 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
…3782) This is a follow up to flutter#173652 Closes flutter#50836
…3782) This is a follow up to flutter#173652 Closes flutter#50836
Fixes #173356