-
Notifications
You must be signed in to change notification settings - Fork 29.8k
[A11y] Add semantics for CupertinoExpansionTile #174480
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
[A11y] Add semantics for CupertinoExpansionTile #174480
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 adds semantics support to CupertinoExpansionTile for better accessibility, including hints for screen readers. It also introduces new localization strings for these hints and updates all relevant localization files. A related refactoring was done in the Material ExpansionTile to align the semantics logic. The changes are well-tested.
My review identified a couple of issues:
- A recurring typo in a new localization string across all
.arbfiles, which could affect screen reader announcements. - Misleading documentation for some of the new localization getters, which could cause confusion for future developers.
I've provided suggestions to fix these issues.
| /// The semantics hint to describe the [CupertinoExpansionTile] expanded state. | ||
| String get expandedHint => 'Collapsed'; | ||
|
|
||
| /// The semantics hint to describe the [CupertinoExpansionTile] collapsed state. | ||
| String get collapsedHint => 'Expanded'; |
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.
The documentation for expandedHint and collapsedHint appears to be swapped. expandedHint describes the state of a collapsed tile, and collapsedHint describes the state of an expanded tile. The implementation in CupertinoExpansionTile relies on this, so the documentation should be updated to reflect the actual usage and prevent confusion.
/// The semantics hint to describe the [CupertinoExpansionTile] collapsed state.
String get expandedHint => 'Collapsed';
/// The semantics hint to describe the [CupertinoExpansionTile] expanded state.
String get collapsedHint => 'Expanded';| /// [CupertinoExpansionTile] on iOS and macOS. This is appended to the [collapsedHint] | ||
| /// hint to provide a more detailed description of the action, e.g. "Expanded | ||
| /// double tap to collapse". | ||
| String get expansionTileExpandedHint => 'double tap to collapse'; |
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.
For iOS i remember it will already announce double tap to activate if you have onTap action. Can you check whether this will cause it to pronounce both this and double tap to activate back to back?
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 tested, it doesn't announce double tap to activate. Is this intended?
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 am not sure what exact mechanism triggers that to be announce, but sounds good to me now
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
Roll Flutter from 6b18740 to 87d5b75 (88 revisions) flutter/flutter@6b18740...87d5b75 2025-09-05 bkonyi@google.com [ Device Lab ] Add regression testing for flutter/flutter#174952 (flutter/flutter#174956) 2025-09-05 engine-flutter-autoroll@skia.org Roll Skia from 0ca53adfc6cc to 845ec125e94c (2 revisions) (flutter/flutter#174978) 2025-09-05 bruno.leroux@gmail.com [a11y-app] Fix NavigationRail leading and trailing labels (flutter/flutter#174861) 2025-09-05 engine-flutter-autoroll@skia.org Roll Skia from d7e99be07d5d to 0ca53adfc6cc (5 revisions) (flutter/flutter#174972) 2025-09-05 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from izfNA3o_2zL4Cjqmy... to xG_uERsxHvUwFHpF2... (flutter/flutter#174970) 2025-09-04 bruno.leroux@gmail.com Fix IconButton.color overrided by IconButtomTheme (flutter/flutter#174515) 2025-09-04 mdebbar@google.com [web] Reuse chrome instance to run all flutter tests (flutter/flutter#174957) 2025-09-04 pedromassango.developer@gmail.com fix(Semantics): Ensure semantics properties take priority over button's (flutter/flutter#174473) 2025-09-04 15619084+vashworth@users.noreply.github.com Make every LLDB Init error message actionable (flutter/flutter#174726) 2025-09-04 jhy03261997@gmail.com Fix table cell semantics rect alignment issues. (flutter/flutter#174914) 2025-09-04 34465683+rkishan516@users.noreply.github.com Fix: Use route navigator for CupertinoSheetRoute pop (flutter/flutter#173103) 2025-09-04 bkonyi@google.com [ Widget Preview] Add `group` property to `Preview` (flutter/flutter#174849) 2025-09-04 47866232+chunhtai@users.noreply.github.com Allow OverlayPortal.overlayChildLayoutBuilder to choose root Overlay (flutter/flutter#174239) 2025-09-04 engine-flutter-autoroll@skia.org Roll Skia from 7c2f502e3304 to d7e99be07d5d (18 revisions) (flutter/flutter#174936) 2025-09-04 mdebbar@google.com Remove 'terms of use' wording from web_unicode (flutter/flutter#174939) 2025-09-04 bkonyi@google.com [ Tool ] Remove leftover Android x86 deprecation warning constant (flutter/flutter#174941) 2025-09-04 15619084+vashworth@users.noreply.github.com Prevent potential crash when accessing window in FlutterSceneDelegate (flutter/flutter#174873) 2025-09-04 engine-flutter-autoroll@skia.org Roll Packages from 42bb347 to 98580c6 (5 revisions) (flutter/flutter#174943) 2025-09-04 bkonyi@google.com [ Device Lab ] Fix wakefulness check to only match log entries with string values (flutter/flutter#174953) 2025-09-04 bruno.leroux@gmail.com Fix expanded DropdownMenu panel is shorter than text field (flutter/flutter#174443) 2025-09-04 31859944+LongCatIsLooong@users.noreply.github.com Add a `viewController` property to the ios/macOS `FlutterPluginRegistrar` protocol (flutter/flutter#174168) 2025-09-03 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from J3T_wZqL_57mRfWky... to izfNA3o_2zL4Cjqmy... (flutter/flutter#174908) 2025-09-03 47866232+chunhtai@users.noreply.github.com Wires up Android API to set section locale (flutter/flutter#173364) 2025-09-03 chinmaygarde@google.com Delete impeller::SPrintF. (flutter/flutter#174900) 2025-09-03 ahmedsameha1@gmail.com Make sure that a DropdownMenuFormField doesn't crash in 0x0 environment (flutter/flutter#174777) 2025-09-03 mdebbar@google.com Remove unnecessary `presubmit_max_attempts` from .ci.yaml (flutter/flutter#174885) 2025-09-03 mdebbar@google.com Use local canvaskit in `dart_data_asset_test.dart` (flutter/flutter#174891) 2025-09-03 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Mark Linux web_canvaskit_tests_7_last as bringup (#174878)" (flutter/flutter#174897) 2025-09-03 victorsanniay@gmail.com Correct intrinsics calculation for CupertinoTextField with placeholder (flutter/flutter#174889) 2025-09-03 11901536+romaingyh@users.noreply.github.com Considers large title height in CupertinoNavigationBar's preferred size (flutter/flutter#173722) 2025-09-03 victorsanniay@gmail.com [A11y] Add semantics for CupertinoExpansionTile (flutter/flutter#174480) 2025-09-03 sokolovskyi.konstantin@gmail.com Fix LinearProgressIndicator track painting. (flutter/flutter#173108) 2025-09-03 matt.boetger@gmail.com update triage documentation to include team-android (flutter/flutter#174850) 2025-09-03 mdebbar@google.com Update `test_timeout_secs` to match `timeout` for `Linux web_skwasm_tests_*` and `Linux web_canvaskit_tests_*` (flutter/flutter#174881) 2025-09-03 engine-flutter-autoroll@skia.org Roll Packages from 5d785a0 to 42bb347 (10 revisions) (flutter/flutter#174876) 2025-09-03 chinmaygarde@google.com Fixup formatting of gn files in the old buildroot. (flutter/flutter#174852) 2025-09-03 iinozemtsev@google.com Roll Dart SDK to 3.10.0-162.1.beta (flutter/flutter#174834) 2025-09-03 mdebbar@google.com Mark Linux web_canvaskit_tests_7_last as bringup (flutter/flutter#174878) 2025-09-02 flar@google.com [Impeller] Fix overdraw in DrawRect geometry (flutter/flutter#174735) 2025-09-02 chinmaygarde@google.com Patch .clang-format files to specify C++20. (flutter/flutter#174848) 2025-09-02 mosum@google.com Add data assets (flutter/flutter#174685) 2025-09-02 mohellebiabdessalem@gmail.com refactors `FlutterPlugin.kt` to use one line statement in the `into` bloc (flutter/flutter#174759) 2025-09-02 47866232+chunhtai@users.noreply.github.com Ensures initial semantics state is sent to engine (flutter/flutter#174845) 2025-09-02 43054281+camsim99@users.noreply.github.com [Android] Break up plugin_test integration tests (flutter/flutter#174728) 2025-09-02 34465683+rkishan516@users.noreply.github.com Fix: Assertion failure in RawScrollbarState with dynamic controller assignment (flutter/flutter#173156) 2025-09-02 engine-flutter-autoroll@skia.org Roll Skia from 359f3d7cc7ed to 7c2f502e3304 (1 revision) (flutter/flutter#174844) ...
Fixes [Add semantics for CupertinoExpansionTile](flutter#173446)
Fixes [Add semantics for CupertinoExpansionTile](flutter#173446)
Roll Flutter from 6b18740 to 87d5b75 (88 revisions) flutter/flutter@6b18740...87d5b75 2025-09-05 bkonyi@google.com [ Device Lab ] Add regression testing for flutter/flutter#174952 (flutter/flutter#174956) 2025-09-05 engine-flutter-autoroll@skia.org Roll Skia from 0ca53adfc6cc to 845ec125e94c (2 revisions) (flutter/flutter#174978) 2025-09-05 bruno.leroux@gmail.com [a11y-app] Fix NavigationRail leading and trailing labels (flutter/flutter#174861) 2025-09-05 engine-flutter-autoroll@skia.org Roll Skia from d7e99be07d5d to 0ca53adfc6cc (5 revisions) (flutter/flutter#174972) 2025-09-05 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from izfNA3o_2zL4Cjqmy... to xG_uERsxHvUwFHpF2... (flutter/flutter#174970) 2025-09-04 bruno.leroux@gmail.com Fix IconButton.color overrided by IconButtomTheme (flutter/flutter#174515) 2025-09-04 mdebbar@google.com [web] Reuse chrome instance to run all flutter tests (flutter/flutter#174957) 2025-09-04 pedromassango.developer@gmail.com fix(Semantics): Ensure semantics properties take priority over button's (flutter/flutter#174473) 2025-09-04 15619084+vashworth@users.noreply.github.com Make every LLDB Init error message actionable (flutter/flutter#174726) 2025-09-04 jhy03261997@gmail.com Fix table cell semantics rect alignment issues. (flutter/flutter#174914) 2025-09-04 34465683+rkishan516@users.noreply.github.com Fix: Use route navigator for CupertinoSheetRoute pop (flutter/flutter#173103) 2025-09-04 bkonyi@google.com [ Widget Preview] Add `group` property to `Preview` (flutter/flutter#174849) 2025-09-04 47866232+chunhtai@users.noreply.github.com Allow OverlayPortal.overlayChildLayoutBuilder to choose root Overlay (flutter/flutter#174239) 2025-09-04 engine-flutter-autoroll@skia.org Roll Skia from 7c2f502e3304 to d7e99be07d5d (18 revisions) (flutter/flutter#174936) 2025-09-04 mdebbar@google.com Remove 'terms of use' wording from web_unicode (flutter/flutter#174939) 2025-09-04 bkonyi@google.com [ Tool ] Remove leftover Android x86 deprecation warning constant (flutter/flutter#174941) 2025-09-04 15619084+vashworth@users.noreply.github.com Prevent potential crash when accessing window in FlutterSceneDelegate (flutter/flutter#174873) 2025-09-04 engine-flutter-autoroll@skia.org Roll Packages from 42bb347 to 98580c6 (5 revisions) (flutter/flutter#174943) 2025-09-04 bkonyi@google.com [ Device Lab ] Fix wakefulness check to only match log entries with string values (flutter/flutter#174953) 2025-09-04 bruno.leroux@gmail.com Fix expanded DropdownMenu panel is shorter than text field (flutter/flutter#174443) 2025-09-04 31859944+LongCatIsLooong@users.noreply.github.com Add a `viewController` property to the ios/macOS `FlutterPluginRegistrar` protocol (flutter/flutter#174168) 2025-09-03 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from J3T_wZqL_57mRfWky... to izfNA3o_2zL4Cjqmy... (flutter/flutter#174908) 2025-09-03 47866232+chunhtai@users.noreply.github.com Wires up Android API to set section locale (flutter/flutter#173364) 2025-09-03 chinmaygarde@google.com Delete impeller::SPrintF. (flutter/flutter#174900) 2025-09-03 ahmedsameha1@gmail.com Make sure that a DropdownMenuFormField doesn't crash in 0x0 environment (flutter/flutter#174777) 2025-09-03 mdebbar@google.com Remove unnecessary `presubmit_max_attempts` from .ci.yaml (flutter/flutter#174885) 2025-09-03 mdebbar@google.com Use local canvaskit in `dart_data_asset_test.dart` (flutter/flutter#174891) 2025-09-03 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Mark Linux web_canvaskit_tests_7_last as bringup (#174878)" (flutter/flutter#174897) 2025-09-03 victorsanniay@gmail.com Correct intrinsics calculation for CupertinoTextField with placeholder (flutter/flutter#174889) 2025-09-03 11901536+romaingyh@users.noreply.github.com Considers large title height in CupertinoNavigationBar's preferred size (flutter/flutter#173722) 2025-09-03 victorsanniay@gmail.com [A11y] Add semantics for CupertinoExpansionTile (flutter/flutter#174480) 2025-09-03 sokolovskyi.konstantin@gmail.com Fix LinearProgressIndicator track painting. (flutter/flutter#173108) 2025-09-03 matt.boetger@gmail.com update triage documentation to include team-android (flutter/flutter#174850) 2025-09-03 mdebbar@google.com Update `test_timeout_secs` to match `timeout` for `Linux web_skwasm_tests_*` and `Linux web_canvaskit_tests_*` (flutter/flutter#174881) 2025-09-03 engine-flutter-autoroll@skia.org Roll Packages from 5d785a0 to 42bb347 (10 revisions) (flutter/flutter#174876) 2025-09-03 chinmaygarde@google.com Fixup formatting of gn files in the old buildroot. (flutter/flutter#174852) 2025-09-03 iinozemtsev@google.com Roll Dart SDK to 3.10.0-162.1.beta (flutter/flutter#174834) 2025-09-03 mdebbar@google.com Mark Linux web_canvaskit_tests_7_last as bringup (flutter/flutter#174878) 2025-09-02 flar@google.com [Impeller] Fix overdraw in DrawRect geometry (flutter/flutter#174735) 2025-09-02 chinmaygarde@google.com Patch .clang-format files to specify C++20. (flutter/flutter#174848) 2025-09-02 mosum@google.com Add data assets (flutter/flutter#174685) 2025-09-02 mohellebiabdessalem@gmail.com refactors `FlutterPlugin.kt` to use one line statement in the `into` bloc (flutter/flutter#174759) 2025-09-02 47866232+chunhtai@users.noreply.github.com Ensures initial semantics state is sent to engine (flutter/flutter#174845) 2025-09-02 43054281+camsim99@users.noreply.github.com [Android] Break up plugin_test integration tests (flutter/flutter#174728) 2025-09-02 34465683+rkishan516@users.noreply.github.com Fix: Assertion failure in RawScrollbarState with dynamic controller assignment (flutter/flutter#173156) 2025-09-02 engine-flutter-autoroll@skia.org Roll Skia from 359f3d7cc7ed to 7c2f502e3304 (1 revision) (flutter/flutter#174844) ...
Fixes [Add semantics for CupertinoExpansionTile](flutter#173446)
Fixes Add semantics for CupertinoExpansionTile