[web:a11y] make header a <header> when non-empty and heading when empty #55996
+133
−28
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This relands the reverted original PR with one important adjustment: if the header is empty and has a label, it is rendered as a heading (
<h1>
,<h2>
, etc) instead of a<header>
. This is to be consistent with mobile, where headers are frequently used as headings, and screen readers do indeed read it as "heading". Changing all headers to the<header>
tag turned to out to be too disruptive to existing usages ofSemanticsProperties.header
.Long-term, when flutter/flutter#155928 is implemented, we could migrate the framework to use
SemanticsProperties.headingLevel
to communicate that something is a heading, and encourage our users to move fromheader
toheadingLevel
as well. After that migration is done, we could make all headers proper<header>
tags, and not special-case empty headers.Fixes flutter/flutter#152268