-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Fix DropdownMenu escape key does not close the menu #178002
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
Fix DropdownMenu escape key does not close the menu #178002
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 provides a solid fix for an issue where the DropdownMenu could not be closed with the escape key when requestFocusOnTap is false. The implementation correctly uses Actions and Shortcuts to handle the DismissIntent. The accompanying tests are thorough, covering both the fix and potential regressions. The test refactoring, including the adoption of tester.sendKeyEvent and improved naming, enhances the overall quality of the test suite. The changes are well-executed and ready to merge.
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 correctly fixes an issue where the DropdownMenu could not be closed with the Escape key when requestFocusOnTap is false. The fix is implemented by properly adding a DismissIntent and a corresponding shortcut for the Escape key. The change is well-supported by new regression tests that cover both requestFocusOnTap states, as well as a more complex interaction scenario. Additionally, many existing tests were cleaned up for consistency and to use modern testing APIs, which improves the overall quality of the test suite. The changes are solid and address the problem effectively.
62386c0 to
f030950
Compare
justinmc
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 👍
| await tester.pump(); | ||
| expect(findMenuPanel(), findsNothing); | ||
| }, | ||
| variant: TargetPlatformVariant.all(), |
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.
Nit: I think you shouldn't need TargetPlatformVariant.all for any of these tests, unless there's specifically platform-dependent stuff happening here. This will end up getting tested on all platforms by CI anyway.
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 used TargetPlatformVariant.all() because those tests depends on DropdownMenu.requestFocusOnTap value which is platform dependent.
But you're right that this is not needed for the two first tests I added because in these tests DropdownMenu.requestFocusOnTap is explicitly set. I pushed a commit to remove TargetPlatformVariant.all() usage for these tests.
f030950 to
47f39c7
Compare
47f39c7 to
a5a524e
Compare
|
autosubmit label was removed for flutter/flutter/178002, because - The status or check suite Google testing has failed. Please fix the issues identified (or deflake) before re-applying this label. |
flutter/flutter@e5d5c01...c5e809a 2025-11-06 robert.ancell@canonical.com Remove WindowingOwner.hasTopLevelWindows (flutter/flutter#178033) 2025-11-06 bruno.leroux@gmail.com Fix DropdownMenu escape key does not close the menu (flutter/flutter#178002) 2025-11-06 pateltirth454@gmail.com Update documentation tool reference in image.dart (flutter/flutter#177782) 2025-11-06 engine-flutter-autoroll@skia.org Roll Skia from 4eb2383d38f2 to 5c4e1352128f (5 revisions) (flutter/flutter#178094) 2025-11-06 chingjun@google.com Revert "Refactor OverlayPortal semantics (#173005)" (flutter/flutter#178007) 2025-11-06 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Fix verified input test failure in CI (attempt 4) (#178018)" (flutter/flutter#178089) 2025-11-06 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[web] Unify Surface code between Skwasm and CanvasKit (#177138)" (flutter/flutter#178085) 2025-11-05 34871572+gmackall@users.noreply.github.com Fix verified input test failure in CI (attempt 4) (flutter/flutter#178018) 2025-11-05 38665793+Jaineel-Mamtora@users.noreply.github.com fix: inconsistent horizontal spacing between hours and mins in time picker for non-english language (flutter/flutter#173706) 2025-11-05 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from mpsxF1gd-jbKNvmpm... to cm88aTLui5yorSGYQ... (flutter/flutter#178074) 2025-11-05 okorohelijah@google.com Fix(ios): Remove arm64 exclusion to support Xcode 26 simulators (flutter/flutter#177065) 2025-11-05 engine-flutter-autoroll@skia.org Roll Skia from 2ff897e9b440 to 4eb2383d38f2 (18 revisions) (flutter/flutter#178070) 2025-11-05 1961493+harryterkelsen@users.noreply.github.com [web] Unify Surface code between Skwasm and CanvasKit (flutter/flutter#177138) 2025-11-05 codefu@google.com Update more missing ninja deps (flutter/flutter#178079) 2025-11-05 codefu@google.com Add ninja / cmake deps to failing tests (flutter/flutter#178054) 2025-11-05 mdebbar@google.com [web] Don't add webparagraph suite to CI (flutter/flutter#177681) 2025-11-05 42980667+srivats22@users.noreply.github.com Fixing broken link in engine readme (flutter/flutter#177987) 2025-11-05 34871572+gmackall@users.noreply.github.com Print reason for adb command failure in verified input test (attempt 3) (flutter/flutter#178005) 2025-11-05 1598289+lukemmtt@users.noreply.github.com Fix `ReorderableList` items jumping when drag direction reverses mid-animation (flutter/flutter#173241) 2025-11-05 116356835+AbdeMohlbi@users.noreply.github.com Replace deprecated `withOpacity` in `overflow_bar.0.dart` example (flutter/flutter#177813) 2025-11-05 116356835+AbdeMohlbi@users.noreply.github.com Replace deprecated `withOpacity` in `data_table.1.dart` example (flutter/flutter#177812) 2025-11-05 116356835+AbdeMohlbi@users.noreply.github.com Replace deprecated `withOpacity` in `switch.1.dart` example (flutter/flutter#177811) 2025-11-04 engine-flutter-autoroll@skia.org Roll Skia from c89b6118266b to 2ff897e9b440 (6 revisions) (flutter/flutter#177999) 2025-11-04 34871572+gmackall@users.noreply.github.com Fix verified input test in CI (attempt 2) (flutter/flutter#177961) 2025-11-04 evanwall@buffalo.edu Replace rendering for solid color circles (both filled and stroked) to use SDFs (flutter/flutter#177482) 2025-11-04 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from vxK5obzfr1X9P2kSh... to mpsxF1gd-jbKNvmpm... (flutter/flutter#177996) 2025-11-04 jason-simmons@users.noreply.github.com Validate that platforms specified in .ci.yaml target names match the platforms defined in the platform_properties section (flutter/flutter#177523) 2025-11-04 engine-flutter-autoroll@skia.org Roll Packages from 1a7075b to 3d926aa (6 revisions) (flutter/flutter#177998) 2025-11-04 sigurdm@google.com Remove dead code from snippet_generator (flutter/flutter#174440) 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 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
## Description This PR fixes escape key not closing the menu when `DropdownMenu.requestFocusOnTap` is false. ## Related Issue Fixes [DropdownMenu menu panel does not close when pressing ESC and requestFocusOnTap is false](flutter#177993) Part of flutter#123797 ## Tests - Adds 3 tests. - Updates 2 non-related tests where I spotted some nits.
## Description This PR fixes escape key not closing the menu when `DropdownMenu.requestFocusOnTap` is false. ## Related Issue Fixes [DropdownMenu menu panel does not close when pressing ESC and requestFocusOnTap is false](flutter#177993) Part of flutter#123797 ## Tests - Adds 3 tests. - Updates 2 non-related tests where I spotted some nits.
Description
This PR fixes escape key not closing the menu when
DropdownMenu.requestFocusOnTapis false.Related Issue
Fixes DropdownMenu menu panel does not close when pressing ESC and requestFocusOnTap is false
Part of #123797
Tests