updateNode method
Update the information associated with the node with the given id
.
The semantics nodes form a tree, with the root of the tree always having
an id of zero. The childrenInTraversalOrder
and childrenInHitTestOrder
are the ids of the nodes that are immediate children of this node. The
former enumerates children in traversal order, and the latter enumerates
the same children in the hit test order. The two lists must have the same
length and contain the same ids. They may only differ in the order the
ids are listed in. For more information about different child orders, see
DebugSemanticsDumpOrder.
The system retains the nodes that are currently reachable from the root. A given update need not contain information for nodes that do not change in the update. If a node is not reachable from the root after an update, the node will be discarded from the tree.
The flags
are a bit field of SemanticsFlags that apply to this node.
The actions
are a bit field of SemanticsActions that can be undertaken
by this node. If the user wishes to undertake one of these actions on this
node, the Window.onSemanticsAction will be called with id
and one of
the possible SemanticsActions. Because the semantics tree is maintained
asynchronously, the Window.onSemanticsAction callback might be called
with an action that is no longer possible.
The label
is a string that describes this node. The value
property
describes the current value of the node as a string. The increasedValue
string will become the value
string after a SemanticsAction.increase
action is performed. The decreasedValue
string will become the value
string after a SemanticsAction.decrease action is performed. The hint
string describes what result an action performed on this node has. The
reading direction of all these strings is given by textDirection
.
The fields 'textSelectionBase' and 'textSelectionExtent' describe the
currently selected text within value
.
For scrollable nodes scrollPosition
describes the current scroll
position in logical pixel. scrollExtentMax
and scrollExtentMin
describe the maximum and minimum in-rage values that scrollPosition
can
be. Both or either may be infinity to indicate unbound scrolling. The
value for scrollPosition
can (temporarily) be outside this range, for
example during an overscroll. scrollChildren
is the count of the
total number of child nodes that contribute semantics and scrollIndex
is the index of the first visible child node that contributes semantics.
The rect
is the region occupied by this node in its own coordinate
system.
The transform
is a matrix that maps this node's coordinate system into
its parent's coordinate system.
Implementation
void updateNode({
int id,
int flags,
int actions,
int textSelectionBase,
int textSelectionExtent,
int scrollChildren,
int scrollIndex,
double scrollPosition,
double scrollExtentMax,
double scrollExtentMin,
Rect rect,
String label,
String hint,
String value,
String increasedValue,
String decreasedValue,
TextDirection textDirection,
Float64List transform,
Int32List childrenInTraversalOrder,
Int32List childrenInHitTestOrder,
@Deprecated('use additionalActions instead')
Int32List customAcccessibilityActions,
Int32List additionalActions,
}) {
if (transform.length != 16)
throw new ArgumentError('transform argument must have 16 entries.');
_updateNode(
id,
flags,
actions,
textSelectionBase,
textSelectionExtent,
scrollChildren,
scrollIndex,
scrollPosition,
scrollExtentMax,
scrollExtentMin,
rect.left,
rect.top,
rect.right,
rect.bottom,
label,
hint,
value,
increasedValue,
decreasedValue,
textDirection != null ? textDirection.index + 1 : 0,
transform,
childrenInTraversalOrder,
childrenInHitTestOrder,
additionalActions ?? customAcccessibilityActions,
);
}