-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Add flag to exclude focus for hidden children in Visibility, maintainFocusability. Set maintainFocusability to false in IndexedStack #159133
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
|
Adding @chunhtai for context on this resolving the go_router issue |
Piinks
left a comment
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.
Hi @skimm3 welcome! Thanks for contributing. Is there a test that verifies this fixes the go_router issue you have linked as well?
| return Visibility.maintain( | ||
| visible: i == index, | ||
| child: children[i], | ||
| return ExcludeFocus( |
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.
This feels something should be added to Visibility widget.
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.
Also it seems it should not use Visibility.maintain since the maintain by default allows interactivity and semantics and animation unecessarily it should use
Visibility(
visible: i == index,
maintainSize: true,
maintainState: true,
child: children[i]
)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.
Thanks for the feedback! Fixed the issue in Visibility widget instead. The new solution makes Visibility ignore focus when child is hidden for all combinations of maintain-parameters. I'm a bit unsure if it should be ignored when maintainInteractivity is true, what do you think?
Removed maintain interactivity and semantics from indexed stack and added a test. Could not remove maintainAnimation since that is needed if maintainSize is set.
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.
It should ignore when maintainInteractivity is true since focus is part of interaction
bc8c4fe to
025bee5
Compare
Thanks! I have a test that verifies the bug and that passes with my fix. Not sure what to do with it since the bug will be fixed when the user is using a flutter version containing this fix and not depending on a go_router version. Here is the code for the test: |
Hmm good question. @chunhtai do you think we should add this test to go_router after this lands to prevent regressions there? |
|
I think we can create a simple test with indexed stack to make sure it hides focus of child underneath since this is the root cause of the go_router issue |
bfc5c95 to
651d851
Compare
chunhtai
left a comment
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, thanks for fixing the issue!!
Piinks
left a comment
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 too! 🎊 Thanks!
|
auto label is removed for flutter/flutter/159133, due to - The status or check suite Google testing has failed. Please fix the issues identified (or deflake) before re-applying this label. |
|
Currently taking a look at the google testing failures. |
b9752b3 to
dffd4e8
Compare
…, maintainFocusability. Set maintainFocusability to false in IndexedStack (flutter/flutter#159133)
…, maintainFocusability. Set maintainFocusability to false in IndexedStack (flutter/flutter#159133)
Roll Flutter from 33cdd8ef31dc to 85564cbba9e7 (39 revisions) flutter/flutter@33cdd8e...85564cb 2025-05-23 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[Reland2] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (#169276)" (flutter/flutter#169347) 2025-05-23 [email protected] Roll Skia from a01ea49f53a4 to 956fd8b14e22 (1 revision) (flutter/flutter#169334) 2025-05-23 [email protected] Roll Dart SDK from 4de10a11ceb9 to 085f110ecf33 (1 revision) (flutter/flutter#169333) 2025-05-23 [email protected] Roll Skia from bcc7e7fce10e to a01ea49f53a4 (1 revision) (flutter/flutter#169329) 2025-05-23 [email protected] Roll Skia from 18b85aced9b7 to bcc7e7fce10e (3 revisions) (flutter/flutter#169323) 2025-05-23 [email protected] Roll Dart SDK from 2a45b2f88a4f to 4de10a11ceb9 (2 revisions) (flutter/flutter#169322) 2025-05-23 [email protected] Remove patching of `package_config.json` from Flutter Pub wrapper. (flutter/flutter#169306) 2025-05-23 [email protected] Add missing dart_dynamic_modules flag for iOS DDM simulator builds (flutter/flutter#169254) 2025-05-23 [email protected] Roll Skia from ea73ccdc1417 to 18b85aced9b7 (6 revisions) (flutter/flutter#169315) 2025-05-23 [email protected] Add flag to exclude focus for hidden children in Visibility, maintainFocusability. Set maintainFocusability to false in IndexedStack (flutter/flutter#159133) 2025-05-23 [email protected] [Reland2] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (flutter/flutter#169276) 2025-05-23 [email protected] Roll Dart SDK from 8f85d89fdc23 to 2a45b2f88a4f (6 revisions) (flutter/flutter#169312) 2025-05-23 [email protected] Removes unnecessary parentheses (flutter/flutter#169015) 2025-05-22 [email protected] Unpin test/test_core/test_api packages (flutter/flutter#169198) 2025-05-22 [email protected] [Engine] Fix an edge case of RoundSuperellipseParam::Contains with sharp corners (flutter/flutter#167977) 2025-05-22 [email protected] Replace goldens in test/cupertino/nav_bar_transition_test.dart (flutter/flutter#169172) 2025-05-22 [email protected] Roll Skia from 13a299964c9f to ea73ccdc1417 (35 revisions) (flutter/flutter#169303) 2025-05-22 [email protected] Increase sub-task timeout for Mac web_tool_tests (flutter/flutter#169307) 2025-05-22 [email protected] Fix crash on two finger selection gesture (flutter/flutter#168598) 2025-05-22 [email protected] Disable the ability to opt-out of `explicit-package-dependencies`. (flutter/flutter#169283) 2025-05-22 [email protected] Fixes tab semantics gets dropped if the child produce a semantics node (flutter/flutter#169233) 2025-05-22 [email protected] Skip `{PLAT}_web_tools_test#expression_evaluation_*_test.dart`, turning tree 🔴 (flutter/flutter#169305) 2025-05-22 [email protected] Update tool-internal `generateLocalizations...()` to never use synthetic (`flutter_gen`) packages (flutter/flutter#169285) 2025-05-22 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Make `build_android_host_app_with_module_aar` build using an aar (#169171)" (flutter/flutter#169287) 2025-05-22 [email protected] Increase sub-task timeout for `web_tool_tests_1_2` (flutter/flutter#169277) 2025-05-22 [email protected] refactor the usage of `MediaQuery.sizeOf(context).height` to use the new `.heightOf(context)` (flutter/flutter#168894) 2025-05-22 [email protected] [tool] Add --no-minify flag to JS Compiler (flutter/flutter#169102) 2025-05-22 [email protected] Update ButtonStyle documentation (flutter/flutter#168062) 2025-05-22 [email protected] Fix the issue where DropdownMenu disposes of the controller. (flutter/flutter#168541) 2025-05-22 [email protected] Add bottomSheetScrimBuilder to Scaffold (flutter/flutter#167335) 2025-05-22 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[Reland] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (#168396) (#168914)" (flutter/flutter#169250) 2025-05-21 [email protected] Roll Dart SDK from 56940edd099d to 8f85d89fdc23 (6 revisions) (flutter/flutter#169237) 2025-05-21 [email protected] Use gestureSettings.touchSlop in PrimaryPointerGestureRecognizer (flutter/flutter#161549) 2025-05-21 [email protected] Normalize BottomAppBarTheme (continue) (flutter/flutter#168966) 2025-05-21 [email protected] [Reland] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (#168396) (flutter/flutter#168914) 2025-05-21 [email protected] Respect `calendarDelegate` in `showDateRangePicker` (flutter/flutter#168290) 2025-05-21 [email protected] Make `build_android_host_app_with_module_aar` build using an aar (flutter/flutter#169171) 2025-05-21 [email protected] Roll Dart SDK from 7c40eba6bf77 to 56940edd099d (flutter/flutter#169135) 2025-05-21 [email protected] Feat: Add full screen dialog support for dialog routes (flutter/flutter#167794) 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 [email protected],[email protected] on the revert to ensure that a human is aware of the problem. ...
…r#9315) Roll Flutter from 33cdd8ef31dc to 85564cbba9e7 (39 revisions) flutter/flutter@33cdd8e...85564cb 2025-05-23 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[Reland2] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (#169276)" (flutter/flutter#169347) 2025-05-23 [email protected] Roll Skia from a01ea49f53a4 to 956fd8b14e22 (1 revision) (flutter/flutter#169334) 2025-05-23 [email protected] Roll Dart SDK from 4de10a11ceb9 to 085f110ecf33 (1 revision) (flutter/flutter#169333) 2025-05-23 [email protected] Roll Skia from bcc7e7fce10e to a01ea49f53a4 (1 revision) (flutter/flutter#169329) 2025-05-23 [email protected] Roll Skia from 18b85aced9b7 to bcc7e7fce10e (3 revisions) (flutter/flutter#169323) 2025-05-23 [email protected] Roll Dart SDK from 2a45b2f88a4f to 4de10a11ceb9 (2 revisions) (flutter/flutter#169322) 2025-05-23 [email protected] Remove patching of `package_config.json` from Flutter Pub wrapper. (flutter/flutter#169306) 2025-05-23 [email protected] Add missing dart_dynamic_modules flag for iOS DDM simulator builds (flutter/flutter#169254) 2025-05-23 [email protected] Roll Skia from ea73ccdc1417 to 18b85aced9b7 (6 revisions) (flutter/flutter#169315) 2025-05-23 [email protected] Add flag to exclude focus for hidden children in Visibility, maintainFocusability. Set maintainFocusability to false in IndexedStack (flutter/flutter#159133) 2025-05-23 [email protected] [Reland2] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (flutter/flutter#169276) 2025-05-23 [email protected] Roll Dart SDK from 8f85d89fdc23 to 2a45b2f88a4f (6 revisions) (flutter/flutter#169312) 2025-05-23 [email protected] Removes unnecessary parentheses (flutter/flutter#169015) 2025-05-22 [email protected] Unpin test/test_core/test_api packages (flutter/flutter#169198) 2025-05-22 [email protected] [Engine] Fix an edge case of RoundSuperellipseParam::Contains with sharp corners (flutter/flutter#167977) 2025-05-22 [email protected] Replace goldens in test/cupertino/nav_bar_transition_test.dart (flutter/flutter#169172) 2025-05-22 [email protected] Roll Skia from 13a299964c9f to ea73ccdc1417 (35 revisions) (flutter/flutter#169303) 2025-05-22 [email protected] Increase sub-task timeout for Mac web_tool_tests (flutter/flutter#169307) 2025-05-22 [email protected] Fix crash on two finger selection gesture (flutter/flutter#168598) 2025-05-22 [email protected] Disable the ability to opt-out of `explicit-package-dependencies`. (flutter/flutter#169283) 2025-05-22 [email protected] Fixes tab semantics gets dropped if the child produce a semantics node (flutter/flutter#169233) 2025-05-22 [email protected] Skip `{PLAT}_web_tools_test#expression_evaluation_*_test.dart`, turning tree 🔴 (flutter/flutter#169305) 2025-05-22 [email protected] Update tool-internal `generateLocalizations...()` to never use synthetic (`flutter_gen`) packages (flutter/flutter#169285) 2025-05-22 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Make `build_android_host_app_with_module_aar` build using an aar (#169171)" (flutter/flutter#169287) 2025-05-22 [email protected] Increase sub-task timeout for `web_tool_tests_1_2` (flutter/flutter#169277) 2025-05-22 [email protected] refactor the usage of `MediaQuery.sizeOf(context).height` to use the new `.heightOf(context)` (flutter/flutter#168894) 2025-05-22 [email protected] [tool] Add --no-minify flag to JS Compiler (flutter/flutter#169102) 2025-05-22 [email protected] Update ButtonStyle documentation (flutter/flutter#168062) 2025-05-22 [email protected] Fix the issue where DropdownMenu disposes of the controller. (flutter/flutter#168541) 2025-05-22 [email protected] Add bottomSheetScrimBuilder to Scaffold (flutter/flutter#167335) 2025-05-22 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[Reland] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (#168396) (#168914)" (flutter/flutter#169250) 2025-05-21 [email protected] Roll Dart SDK from 56940edd099d to 8f85d89fdc23 (6 revisions) (flutter/flutter#169237) 2025-05-21 [email protected] Use gestureSettings.touchSlop in PrimaryPointerGestureRecognizer (flutter/flutter#161549) 2025-05-21 [email protected] Normalize BottomAppBarTheme (continue) (flutter/flutter#168966) 2025-05-21 [email protected] [Reland] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (#168396) (flutter/flutter#168914) 2025-05-21 [email protected] Respect `calendarDelegate` in `showDateRangePicker` (flutter/flutter#168290) 2025-05-21 [email protected] Make `build_android_host_app_with_module_aar` build using an aar (flutter/flutter#169171) 2025-05-21 [email protected] Roll Dart SDK from 7c40eba6bf77 to 56940edd099d (flutter/flutter#169135) 2025-05-21 [email protected] Feat: Add full screen dialog support for dialog routes (flutter/flutter#167794) 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 [email protected],[email protected] on the revert to ensure that a human is aware of the problem. ...
…r#9315) Roll Flutter from 33cdd8ef31dc to 85564cbba9e7 (39 revisions) flutter/flutter@33cdd8e...85564cb 2025-05-23 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[Reland2] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (#169276)" (flutter/flutter#169347) 2025-05-23 [email protected] Roll Skia from a01ea49f53a4 to 956fd8b14e22 (1 revision) (flutter/flutter#169334) 2025-05-23 [email protected] Roll Dart SDK from 4de10a11ceb9 to 085f110ecf33 (1 revision) (flutter/flutter#169333) 2025-05-23 [email protected] Roll Skia from bcc7e7fce10e to a01ea49f53a4 (1 revision) (flutter/flutter#169329) 2025-05-23 [email protected] Roll Skia from 18b85aced9b7 to bcc7e7fce10e (3 revisions) (flutter/flutter#169323) 2025-05-23 [email protected] Roll Dart SDK from 2a45b2f88a4f to 4de10a11ceb9 (2 revisions) (flutter/flutter#169322) 2025-05-23 [email protected] Remove patching of `package_config.json` from Flutter Pub wrapper. (flutter/flutter#169306) 2025-05-23 [email protected] Add missing dart_dynamic_modules flag for iOS DDM simulator builds (flutter/flutter#169254) 2025-05-23 [email protected] Roll Skia from ea73ccdc1417 to 18b85aced9b7 (6 revisions) (flutter/flutter#169315) 2025-05-23 [email protected] Add flag to exclude focus for hidden children in Visibility, maintainFocusability. Set maintainFocusability to false in IndexedStack (flutter/flutter#159133) 2025-05-23 [email protected] [Reland2] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (flutter/flutter#169276) 2025-05-23 [email protected] Roll Dart SDK from 8f85d89fdc23 to 2a45b2f88a4f (6 revisions) (flutter/flutter#169312) 2025-05-23 [email protected] Removes unnecessary parentheses (flutter/flutter#169015) 2025-05-22 [email protected] Unpin test/test_core/test_api packages (flutter/flutter#169198) 2025-05-22 [email protected] [Engine] Fix an edge case of RoundSuperellipseParam::Contains with sharp corners (flutter/flutter#167977) 2025-05-22 [email protected] Replace goldens in test/cupertino/nav_bar_transition_test.dart (flutter/flutter#169172) 2025-05-22 [email protected] Roll Skia from 13a299964c9f to ea73ccdc1417 (35 revisions) (flutter/flutter#169303) 2025-05-22 [email protected] Increase sub-task timeout for Mac web_tool_tests (flutter/flutter#169307) 2025-05-22 [email protected] Fix crash on two finger selection gesture (flutter/flutter#168598) 2025-05-22 [email protected] Disable the ability to opt-out of `explicit-package-dependencies`. (flutter/flutter#169283) 2025-05-22 [email protected] Fixes tab semantics gets dropped if the child produce a semantics node (flutter/flutter#169233) 2025-05-22 [email protected] Skip `{PLAT}_web_tools_test#expression_evaluation_*_test.dart`, turning tree 🔴 (flutter/flutter#169305) 2025-05-22 [email protected] Update tool-internal `generateLocalizations...()` to never use synthetic (`flutter_gen`) packages (flutter/flutter#169285) 2025-05-22 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Make `build_android_host_app_with_module_aar` build using an aar (#169171)" (flutter/flutter#169287) 2025-05-22 [email protected] Increase sub-task timeout for `web_tool_tests_1_2` (flutter/flutter#169277) 2025-05-22 [email protected] refactor the usage of `MediaQuery.sizeOf(context).height` to use the new `.heightOf(context)` (flutter/flutter#168894) 2025-05-22 [email protected] [tool] Add --no-minify flag to JS Compiler (flutter/flutter#169102) 2025-05-22 [email protected] Update ButtonStyle documentation (flutter/flutter#168062) 2025-05-22 [email protected] Fix the issue where DropdownMenu disposes of the controller. (flutter/flutter#168541) 2025-05-22 [email protected] Add bottomSheetScrimBuilder to Scaffold (flutter/flutter#167335) 2025-05-22 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[Reland] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (#168396) (#168914)" (flutter/flutter#169250) 2025-05-21 [email protected] Roll Dart SDK from 56940edd099d to 8f85d89fdc23 (6 revisions) (flutter/flutter#169237) 2025-05-21 [email protected] Use gestureSettings.touchSlop in PrimaryPointerGestureRecognizer (flutter/flutter#161549) 2025-05-21 [email protected] Normalize BottomAppBarTheme (continue) (flutter/flutter#168966) 2025-05-21 [email protected] [Reland] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (#168396) (flutter/flutter#168914) 2025-05-21 [email protected] Respect `calendarDelegate` in `showDateRangePicker` (flutter/flutter#168290) 2025-05-21 [email protected] Make `build_android_host_app_with_module_aar` build using an aar (flutter/flutter#169171) 2025-05-21 [email protected] Roll Dart SDK from 7c40eba6bf77 to 56940edd099d (flutter/flutter#169135) 2025-05-21 [email protected] Feat: Add full screen dialog support for dialog routes (flutter/flutter#167794) 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 [email protected],[email protected] on the revert to ensure that a human is aware of the problem. ...
…, maintainFocusability. Set maintainFocusability to false in IndexedStack (flutter/flutter#159133)
…, maintainFocusability. Set maintainFocusability to false in IndexedStack (flutter/flutter#159133)
…, maintainFocusability. Set maintainFocusability to false in IndexedStack (flutter/flutter#159133)
…, maintainFocusability. Set maintainFocusability to false in IndexedStack (flutter/flutter#159133)
…, maintainFocusability. Set maintainFocusability to false in IndexedStack (flutter/flutter#159133)
| this.maintainSize = false, | ||
| this.maintainSemantics = false, | ||
| this.maintainInteractivity = false, | ||
| this.maintainFocusability = false, |
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.
| this.maintainFocusability = false, | |
| this.maintainFocusability = true, |
Please do not introduce breaking changes like this
Projects that relied on maintainState for hidden focus widgets are broken now
Fixes: #114213 and is a prerequisite for fixing: #148405
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.