Repository navigation
Update semantics header property that it isn't supported on Android. #183111
Description
Activity
- addedframeworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)platform-androidAndroid applications specificallyAndroid applications specificallyd: api docsIssues with https://api.flutter.dev/Issues with https://api.flutter.dev/team-androidOwned by Android platform teamOwned by Android platform team
on Mar 5, 2026 Hi @fabianbrandscheid, thank you for reporting.
Routing this to team-android to evaluate if this intentional change requires updated API documentation to clarify the cross-platform behavior.
- addedfyi-androidFor the attention of Android platform teamFor the attention of Android platform teamteam-accessibilityOwned by Framework Accessibility team (i.e. responsible for accessibility code in flutter/flutter)Owned by Framework Accessibility team (i.e. responsible for accessibility code in flutter/flutter)and removedteam-androidOwned by Android platform teamOwned by Android platform team
on Mar 5, 2026 - addedtriaged-androidTriaged by Android platform teamTriaged by Android platform team
on Mar 10, 2026 - removedfyi-androidFor the attention of Android platform teamFor the attention of Android platform teamtriaged-androidTriaged by Android platform teamTriaged by Android platform team
on Mar 10, 2026 Android doesn't have a
headerconcept, they only haveheading. In the past we mistakenly translate header:true into heading in android accessibility API. We later fixed the mistranslation.For the this issue, I think is WAI. However, I noticed our doc doesn't mention this https://api.flutter.dev/flutter/semantics/SemanticsProperties/header.html
We should update the doc
- changed the title
[-]The semantics header property should also work on Android.[/-][+]Update semantics header property that it isn't supported on Android.[/+]on Mar 11, 2026 - addedP3Issues that are less important to the Flutter projectIssues that are less important to the Flutter projecttriaged-accessibilityTriaged by Framework Accessibility teamTriaged by Framework Accessibility team
on Mar 18, 2026 @chunhtai At the moment, this means I have to set two properties in Flutter so that both platforms (Android and iOS) correctly expose the header/heading role of a text to the screen reader:
Semantics( header: true, headingLevel: 1, child: Text(title), );This feels like a rather dirty workaround.
Wouldn’t it be possible to provide a single header/heading flag that works consistently across both platforms?- added a commit that references this issue
on Apr 8, 2026 - added a commit that references this issue
on Apr 15, 2026 This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.- locked as resolved and limited conversation to collaborators
on Apr 22, 2026
Use case
Just use the
Semanticswidget with theheaderproperty.Since the Flutter 3.38.0 update, TalkBack on Android no longer recognizes the header when only
header: trueis set.This does not work on Android:
This does work on Android:
On iOS, both variants are detected as a header by the screen reader.
Proposal
When you provide the
headerproperty in theSemanticswidget, it should also work on Android.It’s quite strange that it only works on iOS, while on Android I have to additionally use
headingLevelfor it to be recognized correctly.This PR attempted to fix the issue but was closed:
#179681
Could you clarify why it was closed?