-
Notifications
You must be signed in to change notification settings - Fork 28.9k
[Accessibility] Add required semantics flags #164585
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
bf897e0
to
c7fa33d
Compare
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.
mostly lgtm, left a question
void update() { | ||
if (semanticsObject.isFlagsDirty) { | ||
if (semanticsObject.isRequirable) { | ||
owner.setAttribute('aria-required', semanticsObject.isRequired); |
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.
We may need to double check for roles that create additional dom element such as text_field, I think this will add aria-required to the wrapper div instead of the input tag
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.
Good catch. It looks like neither the input tag nor its wrapper div have the aria-required
attribute, even though the Flutter semantics tree has isRequired
. I'll investigate and add a test for this scenario!
Repro...
App:
import 'package:flutter/material.dart';
import 'package:flutter/semantics.dart';
void main() {
runApp(
MaterialApp(
home: Scaffold(
body: Semantics(required: true, child: TextField()),
),
),
);
SemanticsBinding.instance.ensureSemantics();
}
Semantics tree:
SemanticsNode#0
│ Rect.fromLTRB(0.0, 0.0, 2400.0, 1604.0)
│
└─SemanticsNode#1
│ Rect.fromLTRB(0.0, 0.0, 1200.0, 802.0) scaled by 2.0x
│ textDirection: ltr
│
└─SemanticsNode#2
│ Rect.fromLTRB(0.0, 0.0, 1200.0, 802.0)
│ sortKey: OrdinalSortKey#cda74(order: 0.0)
│
└─SemanticsNode#3
│ Rect.fromLTRB(0.0, 0.0, 1200.0, 802.0)
│ flags: scopesRoute
│
└─SemanticsNode#4
Rect.fromLTRB(0.0, 0.0, 1200.0, 48.0)
actions: didGainAccessibilityFocus, didLoseAccessibilityFocus,
focus, tap
flags: isTextField, hasEnabledState, isEnabled, hasRequiredState,
isRequired
textDirection: ltr
text selection: [0, 0]
currentValueLength: 0
HTML generated by Flutter Web:
<flutter-view flt-view-id="0" tabindex="0" style="...">
<flt-semantics-host style="...">
<flt-semantics id="flt-semantic-node-0"
style="...">
<flt-semantics-container style="...">
<flt-semantics id="flt-semantic-node-1"
style="...">
<flt-semantics-container style="...">
<flt-semantics id="flt-semantic-node-2"
style="...">
<flt-semantics-container style="...">
<flt-semantics id="flt-semantic-node-3" role="dialog"
style="...">
<flt-semantics-container style="...">
<flt-semantics id="flt-semantic-node-4"
style="...">
<input type="text" spellcheck="false" autocorrect="on" autocomplete="on"
data-semantics-role="text-field"
style="...">
</flt-semantics>
</flt-semantics-container>
</flt-semantics>
</flt-semantics-container>
</flt-semantics>
</flt-semantics-container>
</flt-semantics>
</flt-semantics-container>
</flt-semantics>
</flt-semantics-host>
</flutter-view>
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.
Yeah, the responsibility for applying aria-required
probably belongs in SemanticRole
implementation classes: SemanticCheckable
, SemanticIncrementable
, SemanticTextField
. Maybe also radiogroup? Not every role supports this.
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.
If it is not even on the div, it is probably that the semanticsRole doesn't use basic super constructor. You will need to manually add the behavior to those classes
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 verified the following:
SemanticsCheckable
- works as expectedSemanticIncrementable
- Do we have an incrementable control with optional values? The MaterialSlider.value
is non-nullable, you cannot have aSlider
without a value.SemanticsTextField
- fixed!
I believe this is addressed, but please let me know if you have follow-up concerns!
26e3e08
to
7893e01
Compare
@@ -640,6 +642,10 @@ abstract class SemanticRole { | |||
addSemanticBehavior(Expandable(semanticsObject, this)); | |||
} | |||
|
|||
void addRequirableBehavior() { | |||
addSemanticBehavior(Requirable(semanticsObject, this)); |
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 performance, can we add the behavior only if semanticsObject.isRequirable
is true? Or do we expect that the value of isRequirable
may change during the lifetime of a node? According to SemanticsConfiguration
below, once isRequired
is set, the node becomes requirable forever.
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 performance, can we add the behavior only if
semanticsObject.isRequirable
is true? Or do we expect that the value ofisRequirable
may change during the lifetime of a node?
I expect the value of isRequirable
can change during the lifetime of a node. For example, imagine I have a form that has a shipping address, a billing address, and a checkbox to use the shipping address as the billing address. If I uncheck the checkbox, the billing address becomes required.
According to
SemanticsConfiguration
below, onceisRequired
is set, the node becomes requirable forever.
That's correct. However, when a render object's semantics needs to update, the SemanticsConfiguration
is thrown away and a new one is created:
flutter/packages/flutter/lib/src/rendering/object.dart
Lines 5528 to 5537 in c38f0b7
void markNeedsUpdate() { | |
final SemanticsNode? producedSemanticsNode = cachedSemanticsNode; | |
// Dirty the semantics tree starting at `this` until we have reached a | |
// RenderObject that is a semantics boundary. All semantics past this | |
// RenderObject are still up-to date. Therefore, we will later only rebuild | |
// the semantics subtree starting at the identified semantics boundary. | |
final bool wasSemanticsBoundary = | |
producedSemanticsNode != null && configProvider.wasSemanticsBoundary; | |
configProvider.clear(); |
flutter/packages/flutter/lib/src/rendering/object.dart
Lines 4679 to 4683 in c38f0b7
void clear() { | |
_isEffectiveConfigWritable = false; | |
_effectiveConfiguration = null; | |
_originalConfiguration = null; | |
} |
flutter/packages/flutter/lib/src/rendering/object.dart
Lines 4631 to 4648 in c38f0b7
/// The original config without any change through [updateConfig]. | |
/// | |
/// This is typically use to recalculate certain properties when mutating | |
/// [effective] since [effective] may contain stale data from previous update. | |
/// Examples are [SemanticsConfiguration.isBlockingUserActions] or | |
/// [SemanticsConfiguration.elevation]. Otherwise, use [effective] instead. | |
SemanticsConfiguration get original { | |
if (_originalConfiguration == null) { | |
_effectiveConfiguration = _originalConfiguration = SemanticsConfiguration(); | |
_renderObject.describeSemanticsConfiguration(_originalConfiguration!); | |
assert( | |
!_originalConfiguration!.explicitChildNodes || | |
_originalConfiguration!.childConfigurationsDelegate == null, | |
'A SemanticsConfiguration with explicitChildNode set to true cannot have a non-null childConfigsDelegate.', | |
); | |
} | |
return _originalConfiguration!; | |
} |
SemanticsConfiguration
mutation is used when its parent needs to update some information:
flutter/packages/flutter/lib/src/rendering/object.dart
Lines 4605 to 4608 in c38f0b7
/// In some cases during [PipelineOwner.flushSemantics], the config has to be | |
/// mutated due to [_SemanticsParentData] update to propagate updated property | |
/// to semantics node. One should use [updateConfig] to update the config in this | |
/// case. |
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, once all comments are addressed
7893e01
to
53df1e3
Compare
Manual roll Flutter from b16430b to 1d954f4 (114 revisions) Manual roll requested by stuartmorgan@google.com flutter/flutter@b16430b...1d954f4 2025-03-17 jacksongardner@google.com Revert "[skwasm] Dynamic Threading (#164748)" (flutter/flutter#165350) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from fa669e2e6d12 to 52130e5c3b34 (4 revisions) (flutter/flutter#165348) 2025-03-17 31859944+LongCatIsLooong@users.noreply.github.com `OverlayPortal.childLayoutBuilder` should rebuild when `OverlayPortal` rebuilds. (flutter/flutter#165331) 2025-03-17 jhy03261997@gmail.com [web][a11y]Delete _childContainerElement (flutter/flutter#163662) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from e45207898e60 to fa669e2e6d12 (8 revisions) (flutter/flutter#165342) 2025-03-17 katelovett@google.com Add documentation for Java test filtering to plugins test document (flutter/flutter#165314) 2025-03-17 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from SDNQgVXxHbbd0qsVw... to mPniqXmPpXqMMpM8z... (flutter/flutter#165313) 2025-03-17 engine-flutter-autoroll@skia.org Roll Dart SDK from 9283d47199b7 to 725172afbc42 (1 revision) (flutter/flutter#165310) 2025-03-17 kamil@szczek.dev feat(Tooltip): replace the height parameter with constraints (flutter/flutter#163314) 2025-03-17 huy@nevercode.io Fix arrowHeadColor breaks differentiation between states (flutter/flutter#165178) 2025-03-17 30870216+gaaclarke@users.noreply.github.com Removes assumption that basis scalar and rounded_scalar match (flutter/flutter#165166) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from 69cf4c2c5db8 to e45207898e60 (1 revision) (flutter/flutter#165300) 2025-03-17 34465683+rkishan516@users.noreply.github.com Refactor: Move sliders value indicator shape to seperate file (flutter/flutter#162858) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from 3931c31032c7 to 69cf4c2c5db8 (1 revision) (flutter/flutter#165288) 2025-03-17 matanlurey@users.noreply.github.com Delete `docs/infra/Infra-Ticket-Queue.md` (flutter/flutter#165258) 2025-03-16 engine-flutter-autoroll@skia.org Roll Skia from 3413a02d6fc8 to 3931c31032c7 (1 revision) (flutter/flutter#165277) 2025-03-16 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from LPz5j18JDsms41r3T... to SDNQgVXxHbbd0qsVw... (flutter/flutter#165275) 2025-03-16 engine-flutter-autoroll@skia.org Roll Dart SDK from 067560bcd521 to 9283d47199b7 (1 revision) (flutter/flutter#165269) 2025-03-16 engine-flutter-autoroll@skia.org Roll Skia from f124daeb564d to 3413a02d6fc8 (1 revision) (flutter/flutter#165263) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from 40bb66a945e4 to 067560bcd521 (1 revision) (flutter/flutter#165262) 2025-03-15 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from efdpJgW4DIV6j1mO1... to LPz5j18JDsms41r3T... (flutter/flutter#165252) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from f23d496f0585 to 40bb66a945e4 (1 revision) (flutter/flutter#165250) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from 8814749ec6a4 to f23d496f0585 (1 revision) (flutter/flutter#165246) 2025-03-15 engine-flutter-autoroll@skia.org Roll Skia from 4568e766ed0a to f124daeb564d (1 revision) (flutter/flutter#165245) 2025-03-15 47866232+chunhtai@users.noreply.github.com Revert "Prevent explicit roles from merging (#164732)" (flutter/flutter#165222) 2025-03-15 engine-flutter-autoroll@skia.org Roll Skia from bac6e76abfc7 to 4568e766ed0a (5 revisions) (flutter/flutter#165241) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from a51f1bfa0f6a to 8814749ec6a4 (2 revisions) (flutter/flutter#165227) 2025-03-14 engine-flutter-autoroll@skia.org Roll Skia from 98b6922deecf to bac6e76abfc7 (5 revisions) (flutter/flutter#165225) 2025-03-14 34871572+gmackall@users.noreply.github.com Point ktlint AS docs to the `.editorconfig` that is actually used by ci, instead of making a copy in the README (flutter/flutter#165213) 2025-03-14 katelovett@google.com Add remaining dart fixes for Color deprecations when importing painting.dart (flutter/flutter#162609) 2025-03-14 737941+loic-sharma@users.noreply.github.com [Accessibility] Add required semantics flags (flutter/flutter#164585) 2025-03-14 engine-flutter-autoroll@skia.org Roll Skia from f4467ff38f1f to 98b6922deecf (5 revisions) (flutter/flutter#165215) 2025-03-14 jessiewong401@gmail.com Convert `BaseFlutterTask` From Groovy to Kotlin (flutter/flutter#163148) 2025-03-14 31859944+LongCatIsLooong@users.noreply.github.com `OverlayPortal.overlayChildLayoutBuilder` (flutter/flutter#164034) 2025-03-14 2shrestha22@gmail.com Remove redundant `useMaterial3: true` (flutter/flutter#163376) 2025-03-14 engine-flutter-autoroll@skia.org Roll Packages from 9cc6f37 to ff7724c (1 revision) (flutter/flutter#165197) 2025-03-14 1063596+reidbaker@users.noreply.github.com Changelog updates from 3.29.2 (flutter/flutter#165194) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from 576514b2bfce to a51f1bfa0f6a (1 revision) (flutter/flutter#165191) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from ceb58442306e to 576514b2bfce (2 revisions) (flutter/flutter#165180) 2025-03-14 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from qXOLczyRJadxMW0PK... to efdpJgW4DIV6j1mO1... (flutter/flutter#165175) 2025-03-14 jonahwilliams@google.com [Impeller] Enable mediatek on API 34+. (flutter/flutter#165156) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from cd06d4ba4fec to ceb58442306e (5 revisions) (flutter/flutter#165159) 2025-03-13 34871572+gmackall@users.noreply.github.com [FGP conversion] Port `FlutterExtension` from Groovy to Kotlin (flutter/flutter#165143) 2025-03-13 47866232+chunhtai@users.noreply.github.com Prevent explicit roles from merging (flutter/flutter#164732) ...
…8922) Manual roll Flutter from b16430b to 1d954f4 (114 revisions) Manual roll requested by stuartmorgan@google.com flutter/flutter@b16430b...1d954f4 2025-03-17 jacksongardner@google.com Revert "[skwasm] Dynamic Threading (#164748)" (flutter/flutter#165350) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from fa669e2e6d12 to 52130e5c3b34 (4 revisions) (flutter/flutter#165348) 2025-03-17 31859944+LongCatIsLooong@users.noreply.github.com `OverlayPortal.childLayoutBuilder` should rebuild when `OverlayPortal` rebuilds. (flutter/flutter#165331) 2025-03-17 jhy03261997@gmail.com [web][a11y]Delete _childContainerElement (flutter/flutter#163662) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from e45207898e60 to fa669e2e6d12 (8 revisions) (flutter/flutter#165342) 2025-03-17 katelovett@google.com Add documentation for Java test filtering to plugins test document (flutter/flutter#165314) 2025-03-17 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from SDNQgVXxHbbd0qsVw... to mPniqXmPpXqMMpM8z... (flutter/flutter#165313) 2025-03-17 engine-flutter-autoroll@skia.org Roll Dart SDK from 9283d47199b7 to 725172afbc42 (1 revision) (flutter/flutter#165310) 2025-03-17 kamil@szczek.dev feat(Tooltip): replace the height parameter with constraints (flutter/flutter#163314) 2025-03-17 huy@nevercode.io Fix arrowHeadColor breaks differentiation between states (flutter/flutter#165178) 2025-03-17 30870216+gaaclarke@users.noreply.github.com Removes assumption that basis scalar and rounded_scalar match (flutter/flutter#165166) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from 69cf4c2c5db8 to e45207898e60 (1 revision) (flutter/flutter#165300) 2025-03-17 34465683+rkishan516@users.noreply.github.com Refactor: Move sliders value indicator shape to seperate file (flutter/flutter#162858) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from 3931c31032c7 to 69cf4c2c5db8 (1 revision) (flutter/flutter#165288) 2025-03-17 matanlurey@users.noreply.github.com Delete `docs/infra/Infra-Ticket-Queue.md` (flutter/flutter#165258) 2025-03-16 engine-flutter-autoroll@skia.org Roll Skia from 3413a02d6fc8 to 3931c31032c7 (1 revision) (flutter/flutter#165277) 2025-03-16 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from LPz5j18JDsms41r3T... to SDNQgVXxHbbd0qsVw... (flutter/flutter#165275) 2025-03-16 engine-flutter-autoroll@skia.org Roll Dart SDK from 067560bcd521 to 9283d47199b7 (1 revision) (flutter/flutter#165269) 2025-03-16 engine-flutter-autoroll@skia.org Roll Skia from f124daeb564d to 3413a02d6fc8 (1 revision) (flutter/flutter#165263) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from 40bb66a945e4 to 067560bcd521 (1 revision) (flutter/flutter#165262) 2025-03-15 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from efdpJgW4DIV6j1mO1... to LPz5j18JDsms41r3T... (flutter/flutter#165252) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from f23d496f0585 to 40bb66a945e4 (1 revision) (flutter/flutter#165250) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from 8814749ec6a4 to f23d496f0585 (1 revision) (flutter/flutter#165246) 2025-03-15 engine-flutter-autoroll@skia.org Roll Skia from 4568e766ed0a to f124daeb564d (1 revision) (flutter/flutter#165245) 2025-03-15 47866232+chunhtai@users.noreply.github.com Revert "Prevent explicit roles from merging (#164732)" (flutter/flutter#165222) 2025-03-15 engine-flutter-autoroll@skia.org Roll Skia from bac6e76abfc7 to 4568e766ed0a (5 revisions) (flutter/flutter#165241) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from a51f1bfa0f6a to 8814749ec6a4 (2 revisions) (flutter/flutter#165227) 2025-03-14 engine-flutter-autoroll@skia.org Roll Skia from 98b6922deecf to bac6e76abfc7 (5 revisions) (flutter/flutter#165225) 2025-03-14 34871572+gmackall@users.noreply.github.com Point ktlint AS docs to the `.editorconfig` that is actually used by ci, instead of making a copy in the README (flutter/flutter#165213) 2025-03-14 katelovett@google.com Add remaining dart fixes for Color deprecations when importing painting.dart (flutter/flutter#162609) 2025-03-14 737941+loic-sharma@users.noreply.github.com [Accessibility] Add required semantics flags (flutter/flutter#164585) 2025-03-14 engine-flutter-autoroll@skia.org Roll Skia from f4467ff38f1f to 98b6922deecf (5 revisions) (flutter/flutter#165215) 2025-03-14 jessiewong401@gmail.com Convert `BaseFlutterTask` From Groovy to Kotlin (flutter/flutter#163148) 2025-03-14 31859944+LongCatIsLooong@users.noreply.github.com `OverlayPortal.overlayChildLayoutBuilder` (flutter/flutter#164034) 2025-03-14 2shrestha22@gmail.com Remove redundant `useMaterial3: true` (flutter/flutter#163376) 2025-03-14 engine-flutter-autoroll@skia.org Roll Packages from 9cc6f37 to ff7724c (1 revision) (flutter/flutter#165197) 2025-03-14 1063596+reidbaker@users.noreply.github.com Changelog updates from 3.29.2 (flutter/flutter#165194) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from 576514b2bfce to a51f1bfa0f6a (1 revision) (flutter/flutter#165191) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from ceb58442306e to 576514b2bfce (2 revisions) (flutter/flutter#165180) 2025-03-14 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from qXOLczyRJadxMW0PK... to efdpJgW4DIV6j1mO1... (flutter/flutter#165175) 2025-03-14 jonahwilliams@google.com [Impeller] Enable mediatek on API 34+. (flutter/flutter#165156) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from cd06d4ba4fec to ceb58442306e (5 revisions) (flutter/flutter#165159) 2025-03-13 34871572+gmackall@users.noreply.github.com [FGP conversion] Port `FlutterExtension` from Groovy to Kotlin (flutter/flutter#165143) 2025-03-13 47866232+chunhtai@users.noreply.github.com Prevent explicit roles from merging (flutter/flutter#164732) ...
… (#8922) Manual roll Flutter from b16430b2fd57 to 1d954f4e96bd (114 revisions) Manual roll requested by stuartmorgan@google.com flutter/flutter@b16430b...1d954f4 2025-03-17 jacksongardner@google.com Revert "[skwasm] Dynamic Threading (#164748)" (flutter/flutter#165350) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from fa669e2e6d12 to 52130e5c3b34 (4 revisions) (flutter/flutter#165348) 2025-03-17 31859944+LongCatIsLooong@users.noreply.github.com `OverlayPortal.childLayoutBuilder` should rebuild when `OverlayPortal` rebuilds. (flutter/flutter#165331) 2025-03-17 jhy03261997@gmail.com [web][a11y]Delete _childContainerElement (flutter/flutter#163662) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from e45207898e60 to fa669e2e6d12 (8 revisions) (flutter/flutter#165342) 2025-03-17 katelovett@google.com Add documentation for Java test filtering to plugins test document (flutter/flutter#165314) 2025-03-17 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from SDNQgVXxHbbd0qsVw... to mPniqXmPpXqMMpM8z... (flutter/flutter#165313) 2025-03-17 engine-flutter-autoroll@skia.org Roll Dart SDK from 9283d47199b7 to 725172afbc42 (1 revision) (flutter/flutter#165310) 2025-03-17 kamil@szczek.dev feat(Tooltip): replace the height parameter with constraints (flutter/flutter#163314) 2025-03-17 huy@nevercode.io Fix arrowHeadColor breaks differentiation between states (flutter/flutter#165178) 2025-03-17 30870216+gaaclarke@users.noreply.github.com Removes assumption that basis scalar and rounded_scalar match (flutter/flutter#165166) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from 69cf4c2c5db8 to e45207898e60 (1 revision) (flutter/flutter#165300) 2025-03-17 34465683+rkishan516@users.noreply.github.com Refactor: Move sliders value indicator shape to seperate file (flutter/flutter#162858) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from 3931c31032c7 to 69cf4c2c5db8 (1 revision) (flutter/flutter#165288) 2025-03-17 matanlurey@users.noreply.github.com Delete `docs/infra/Infra-Ticket-Queue.md` (flutter/flutter#165258) 2025-03-16 engine-flutter-autoroll@skia.org Roll Skia from 3413a02d6fc8 to 3931c31032c7 (1 revision) (flutter/flutter#165277) 2025-03-16 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from LPz5j18JDsms41r3T... to SDNQgVXxHbbd0qsVw... (flutter/flutter#165275) 2025-03-16 engine-flutter-autoroll@skia.org Roll Dart SDK from 067560bcd521 to 9283d47199b7 (1 revision) (flutter/flutter#165269) 2025-03-16 engine-flutter-autoroll@skia.org Roll Skia from f124daeb564d to 3413a02d6fc8 (1 revision) (flutter/flutter#165263) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from 40bb66a945e4 to 067560bcd521 (1 revision) (flutter/flutter#165262) 2025-03-15 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from efdpJgW4DIV6j1mO1... to LPz5j18JDsms41r3T... (flutter/flutter#165252) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from f23d496f0585 to 40bb66a945e4 (1 revision) (flutter/flutter#165250) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from 8814749ec6a4 to f23d496f0585 (1 revision) (flutter/flutter#165246) 2025-03-15 engine-flutter-autoroll@skia.org Roll Skia from 4568e766ed0a to f124daeb564d (1 revision) (flutter/flutter#165245) 2025-03-15 47866232+chunhtai@users.noreply.github.com Revert "Prevent explicit roles from merging (#164732)" (flutter/flutter#165222) 2025-03-15 engine-flutter-autoroll@skia.org Roll Skia from bac6e76abfc7 to 4568e766ed0a (5 revisions) (flutter/flutter#165241) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from a51f1bfa0f6a to 8814749ec6a4 (2 revisions) (flutter/flutter#165227) 2025-03-14 engine-flutter-autoroll@skia.org Roll Skia from 98b6922deecf to bac6e76abfc7 (5 revisions) (flutter/flutter#165225) 2025-03-14 34871572+gmackall@users.noreply.github.com Point ktlint AS docs to the `.editorconfig` that is actually used by ci, instead of making a copy in the README (flutter/flutter#165213) 2025-03-14 katelovett@google.com Add remaining dart fixes for Color deprecations when importing painting.dart (flutter/flutter#162609) 2025-03-14 737941+loic-sharma@users.noreply.github.com [Accessibility] Add required semantics flags (flutter/flutter#164585) 2025-03-14 engine-flutter-autoroll@skia.org Roll Skia from f4467ff38f1f to 98b6922deecf (5 revisions) (flutter/flutter#165215) 2025-03-14 jessiewong401@gmail.com Convert `BaseFlutterTask` From Groovy to Kotlin (flutter/flutter#163148) 2025-03-14 31859944+LongCatIsLooong@users.noreply.github.com `OverlayPortal.overlayChildLayoutBuilder` (flutter/flutter#164034) 2025-03-14 2shrestha22@gmail.com Remove redundant `useMaterial3: true` (flutter/flutter#163376) 2025-03-14 engine-flutter-autoroll@skia.org Roll Packages from bdb9c96 to d632936 (1 revision) (flutter/flutter#165197) 2025-03-14 1063596+reidbaker@users.noreply.github.com Changelog updates from 3.29.2 (flutter/flutter#165194) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from 576514b2bfce to a51f1bfa0f6a (1 revision) (flutter/flutter#165191) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from ceb58442306e to 576514b2bfce (2 revisions) (flutter/flutter#165180) 2025-03-14 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from qXOLczyRJadxMW0PK... to efdpJgW4DIV6j1mO1... (flutter/flutter#165175) 2025-03-14 jonahwilliams@google.com [Impeller] Enable mediatek on API 34+. (flutter/flutter#165156) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from cd06d4ba4fec to ceb58442306e (5 revisions) (flutter/flutter#165159) 2025-03-13 34871572+gmackall@users.noreply.github.com [FGP conversion] Port `FlutterExtension` from Groovy to Kotlin (flutter/flutter#165143) 2025-03-13 47866232+chunhtai@users.noreply.github.com Prevent explicit roles from merging (flutter/flutter#164732) ...
…8922) Manual roll Flutter from b16430b to 1d954f4 (114 revisions) Manual roll requested by stuartmorgan@google.com flutter/flutter@b16430b...1d954f4 2025-03-17 jacksongardner@google.com Revert "[skwasm] Dynamic Threading (#164748)" (flutter/flutter#165350) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from fa669e2e6d12 to 52130e5c3b34 (4 revisions) (flutter/flutter#165348) 2025-03-17 31859944+LongCatIsLooong@users.noreply.github.com `OverlayPortal.childLayoutBuilder` should rebuild when `OverlayPortal` rebuilds. (flutter/flutter#165331) 2025-03-17 jhy03261997@gmail.com [web][a11y]Delete _childContainerElement (flutter/flutter#163662) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from e45207898e60 to fa669e2e6d12 (8 revisions) (flutter/flutter#165342) 2025-03-17 katelovett@google.com Add documentation for Java test filtering to plugins test document (flutter/flutter#165314) 2025-03-17 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from SDNQgVXxHbbd0qsVw... to mPniqXmPpXqMMpM8z... (flutter/flutter#165313) 2025-03-17 engine-flutter-autoroll@skia.org Roll Dart SDK from 9283d47199b7 to 725172afbc42 (1 revision) (flutter/flutter#165310) 2025-03-17 kamil@szczek.dev feat(Tooltip): replace the height parameter with constraints (flutter/flutter#163314) 2025-03-17 huy@nevercode.io Fix arrowHeadColor breaks differentiation between states (flutter/flutter#165178) 2025-03-17 30870216+gaaclarke@users.noreply.github.com Removes assumption that basis scalar and rounded_scalar match (flutter/flutter#165166) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from 69cf4c2c5db8 to e45207898e60 (1 revision) (flutter/flutter#165300) 2025-03-17 34465683+rkishan516@users.noreply.github.com Refactor: Move sliders value indicator shape to seperate file (flutter/flutter#162858) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from 3931c31032c7 to 69cf4c2c5db8 (1 revision) (flutter/flutter#165288) 2025-03-17 matanlurey@users.noreply.github.com Delete `docs/infra/Infra-Ticket-Queue.md` (flutter/flutter#165258) 2025-03-16 engine-flutter-autoroll@skia.org Roll Skia from 3413a02d6fc8 to 3931c31032c7 (1 revision) (flutter/flutter#165277) 2025-03-16 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from LPz5j18JDsms41r3T... to SDNQgVXxHbbd0qsVw... (flutter/flutter#165275) 2025-03-16 engine-flutter-autoroll@skia.org Roll Dart SDK from 067560bcd521 to 9283d47199b7 (1 revision) (flutter/flutter#165269) 2025-03-16 engine-flutter-autoroll@skia.org Roll Skia from f124daeb564d to 3413a02d6fc8 (1 revision) (flutter/flutter#165263) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from 40bb66a945e4 to 067560bcd521 (1 revision) (flutter/flutter#165262) 2025-03-15 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from efdpJgW4DIV6j1mO1... to LPz5j18JDsms41r3T... (flutter/flutter#165252) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from f23d496f0585 to 40bb66a945e4 (1 revision) (flutter/flutter#165250) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from 8814749ec6a4 to f23d496f0585 (1 revision) (flutter/flutter#165246) 2025-03-15 engine-flutter-autoroll@skia.org Roll Skia from 4568e766ed0a to f124daeb564d (1 revision) (flutter/flutter#165245) 2025-03-15 47866232+chunhtai@users.noreply.github.com Revert "Prevent explicit roles from merging (#164732)" (flutter/flutter#165222) 2025-03-15 engine-flutter-autoroll@skia.org Roll Skia from bac6e76abfc7 to 4568e766ed0a (5 revisions) (flutter/flutter#165241) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from a51f1bfa0f6a to 8814749ec6a4 (2 revisions) (flutter/flutter#165227) 2025-03-14 engine-flutter-autoroll@skia.org Roll Skia from 98b6922deecf to bac6e76abfc7 (5 revisions) (flutter/flutter#165225) 2025-03-14 34871572+gmackall@users.noreply.github.com Point ktlint AS docs to the `.editorconfig` that is actually used by ci, instead of making a copy in the README (flutter/flutter#165213) 2025-03-14 katelovett@google.com Add remaining dart fixes for Color deprecations when importing painting.dart (flutter/flutter#162609) 2025-03-14 737941+loic-sharma@users.noreply.github.com [Accessibility] Add required semantics flags (flutter/flutter#164585) 2025-03-14 engine-flutter-autoroll@skia.org Roll Skia from f4467ff38f1f to 98b6922deecf (5 revisions) (flutter/flutter#165215) 2025-03-14 jessiewong401@gmail.com Convert `BaseFlutterTask` From Groovy to Kotlin (flutter/flutter#163148) 2025-03-14 31859944+LongCatIsLooong@users.noreply.github.com `OverlayPortal.overlayChildLayoutBuilder` (flutter/flutter#164034) 2025-03-14 2shrestha22@gmail.com Remove redundant `useMaterial3: true` (flutter/flutter#163376) 2025-03-14 engine-flutter-autoroll@skia.org Roll Packages from 9cc6f37 to ff7724c (1 revision) (flutter/flutter#165197) 2025-03-14 1063596+reidbaker@users.noreply.github.com Changelog updates from 3.29.2 (flutter/flutter#165194) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from 576514b2bfce to a51f1bfa0f6a (1 revision) (flutter/flutter#165191) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from ceb58442306e to 576514b2bfce (2 revisions) (flutter/flutter#165180) 2025-03-14 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from qXOLczyRJadxMW0PK... to efdpJgW4DIV6j1mO1... (flutter/flutter#165175) 2025-03-14 jonahwilliams@google.com [Impeller] Enable mediatek on API 34+. (flutter/flutter#165156) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from cd06d4ba4fec to ceb58442306e (5 revisions) (flutter/flutter#165159) 2025-03-13 34871572+gmackall@users.noreply.github.com [FGP conversion] Port `FlutterExtension` from Groovy to Kotlin (flutter/flutter#165143) 2025-03-13 47866232+chunhtai@users.noreply.github.com Prevent explicit roles from merging (flutter/flutter#164732) ...
…8922) Manual roll Flutter from b16430b to 1d954f4 (114 revisions) Manual roll requested by stuartmorgan@google.com flutter/flutter@b16430b...1d954f4 2025-03-17 jacksongardner@google.com Revert "[skwasm] Dynamic Threading (#164748)" (flutter/flutter#165350) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from fa669e2e6d12 to 52130e5c3b34 (4 revisions) (flutter/flutter#165348) 2025-03-17 31859944+LongCatIsLooong@users.noreply.github.com `OverlayPortal.childLayoutBuilder` should rebuild when `OverlayPortal` rebuilds. (flutter/flutter#165331) 2025-03-17 jhy03261997@gmail.com [web][a11y]Delete _childContainerElement (flutter/flutter#163662) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from e45207898e60 to fa669e2e6d12 (8 revisions) (flutter/flutter#165342) 2025-03-17 katelovett@google.com Add documentation for Java test filtering to plugins test document (flutter/flutter#165314) 2025-03-17 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from SDNQgVXxHbbd0qsVw... to mPniqXmPpXqMMpM8z... (flutter/flutter#165313) 2025-03-17 engine-flutter-autoroll@skia.org Roll Dart SDK from 9283d47199b7 to 725172afbc42 (1 revision) (flutter/flutter#165310) 2025-03-17 kamil@szczek.dev feat(Tooltip): replace the height parameter with constraints (flutter/flutter#163314) 2025-03-17 huy@nevercode.io Fix arrowHeadColor breaks differentiation between states (flutter/flutter#165178) 2025-03-17 30870216+gaaclarke@users.noreply.github.com Removes assumption that basis scalar and rounded_scalar match (flutter/flutter#165166) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from 69cf4c2c5db8 to e45207898e60 (1 revision) (flutter/flutter#165300) 2025-03-17 34465683+rkishan516@users.noreply.github.com Refactor: Move sliders value indicator shape to seperate file (flutter/flutter#162858) 2025-03-17 engine-flutter-autoroll@skia.org Roll Skia from 3931c31032c7 to 69cf4c2c5db8 (1 revision) (flutter/flutter#165288) 2025-03-17 matanlurey@users.noreply.github.com Delete `docs/infra/Infra-Ticket-Queue.md` (flutter/flutter#165258) 2025-03-16 engine-flutter-autoroll@skia.org Roll Skia from 3413a02d6fc8 to 3931c31032c7 (1 revision) (flutter/flutter#165277) 2025-03-16 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from LPz5j18JDsms41r3T... to SDNQgVXxHbbd0qsVw... (flutter/flutter#165275) 2025-03-16 engine-flutter-autoroll@skia.org Roll Dart SDK from 067560bcd521 to 9283d47199b7 (1 revision) (flutter/flutter#165269) 2025-03-16 engine-flutter-autoroll@skia.org Roll Skia from f124daeb564d to 3413a02d6fc8 (1 revision) (flutter/flutter#165263) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from 40bb66a945e4 to 067560bcd521 (1 revision) (flutter/flutter#165262) 2025-03-15 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from efdpJgW4DIV6j1mO1... to LPz5j18JDsms41r3T... (flutter/flutter#165252) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from f23d496f0585 to 40bb66a945e4 (1 revision) (flutter/flutter#165250) 2025-03-15 engine-flutter-autoroll@skia.org Roll Dart SDK from 8814749ec6a4 to f23d496f0585 (1 revision) (flutter/flutter#165246) 2025-03-15 engine-flutter-autoroll@skia.org Roll Skia from 4568e766ed0a to f124daeb564d (1 revision) (flutter/flutter#165245) 2025-03-15 47866232+chunhtai@users.noreply.github.com Revert "Prevent explicit roles from merging (#164732)" (flutter/flutter#165222) 2025-03-15 engine-flutter-autoroll@skia.org Roll Skia from bac6e76abfc7 to 4568e766ed0a (5 revisions) (flutter/flutter#165241) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from a51f1bfa0f6a to 8814749ec6a4 (2 revisions) (flutter/flutter#165227) 2025-03-14 engine-flutter-autoroll@skia.org Roll Skia from 98b6922deecf to bac6e76abfc7 (5 revisions) (flutter/flutter#165225) 2025-03-14 34871572+gmackall@users.noreply.github.com Point ktlint AS docs to the `.editorconfig` that is actually used by ci, instead of making a copy in the README (flutter/flutter#165213) 2025-03-14 katelovett@google.com Add remaining dart fixes for Color deprecations when importing painting.dart (flutter/flutter#162609) 2025-03-14 737941+loic-sharma@users.noreply.github.com [Accessibility] Add required semantics flags (flutter/flutter#164585) 2025-03-14 engine-flutter-autoroll@skia.org Roll Skia from f4467ff38f1f to 98b6922deecf (5 revisions) (flutter/flutter#165215) 2025-03-14 jessiewong401@gmail.com Convert `BaseFlutterTask` From Groovy to Kotlin (flutter/flutter#163148) 2025-03-14 31859944+LongCatIsLooong@users.noreply.github.com `OverlayPortal.overlayChildLayoutBuilder` (flutter/flutter#164034) 2025-03-14 2shrestha22@gmail.com Remove redundant `useMaterial3: true` (flutter/flutter#163376) 2025-03-14 engine-flutter-autoroll@skia.org Roll Packages from 9cc6f37 to ff7724c (1 revision) (flutter/flutter#165197) 2025-03-14 1063596+reidbaker@users.noreply.github.com Changelog updates from 3.29.2 (flutter/flutter#165194) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from 576514b2bfce to a51f1bfa0f6a (1 revision) (flutter/flutter#165191) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from ceb58442306e to 576514b2bfce (2 revisions) (flutter/flutter#165180) 2025-03-14 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from qXOLczyRJadxMW0PK... to efdpJgW4DIV6j1mO1... (flutter/flutter#165175) 2025-03-14 jonahwilliams@google.com [Impeller] Enable mediatek on API 34+. (flutter/flutter#165156) 2025-03-14 engine-flutter-autoroll@skia.org Roll Dart SDK from cd06d4ba4fec to ceb58442306e (5 revisions) (flutter/flutter#165159) 2025-03-13 34871572+gmackall@users.noreply.github.com [FGP conversion] Port `FlutterExtension` from Groovy to Kotlin (flutter/flutter#165143) 2025-03-13 47866232+chunhtai@users.noreply.github.com Prevent explicit roles from merging (flutter/flutter#164732) ...
This adds "required" semantic nodes, which indicate a node that requires user input before a form can be submitted.
On Flutter Web, these get converted into
aria-required
attributes.Addresses #162139
Example app
DropdownMenu
which currently produces an incorrect semantics tree. That will be fixed by #163638.Today, you wrap your control in a
Semantics(required: true, child ...)
. For example:Example app with required semantic flags...
Semantics tree...
HTML generated by Flutter web...
In the future, we can update Material and Cupertino widgets to automatically make their semantics node required when desirable.
Pre-launch Checklist
///
).If you need help, consider asking for advice on the #hackers-new channel on Discord.