FocusOrderRule class
Flags sibling groups of interactive semantics nodes whose traversal order — the order a screen reader or switch-access user would move through them — doesn't match their visual reading order (top-to-bottom, then left-to-right).
SemanticsNode children are already given to us in effective traversal
order (build order, unless the app set an explicit sort key), so this
compares that order directly against a geometry-sorted copy rather than
trying to re-derive traversal order itself.
This is a heuristic, not a WCAG-exact check: "same row" is decided by
whether two nodes' vertical centers are close relative to their height,
which can misjudge unusually-shaped or overlapping layouts. It also only
compares direct siblings — a large layout intentionally split into
multiple traversal groups (e.g. via Semantics(sortKey: ...)) is
evaluated group by group, which is usually what you want, but can miss
a genuine cross-group ordering problem.
- Inheritance
-
- Object
- A11ySemanticsRule
- FocusOrderRule
Constructors
- FocusOrderRule()
-
const
Properties
- description → String
-
Short human-readable description of what this rule checks.
no setteroverride
- hashCode → int
-
The hash code for this object.
no setterinherited
- id → String
-
Stable identifier used in A11yViolation.ruleId and reports.
no setteroverride
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
check(
List< A11ySemanticsNodeInfo> nodes) → List<A11yViolation> -
Inspects
nodes— a snapshot captured by SemanticsTreeWalker — and returns any violations found.override -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited