updateNode method

void updateNode ({int id, int flags, int actions, int maxValueLength, int currentValueLength, int textSelectionBase, int textSelectionExtent, int platformViewId, int scrollChildren, int scrollIndex, double scrollPosition, double scrollExtentMax, double scrollExtentMin, double elevation, double thickness, Rect rect, String label, String hint, String value, String increasedValue, String decreasedValue, TextDirection textDirection, Float64List transform, Int32List childrenInTraversalOrder Int32List childrenInHitTestOrder Int32List additionalActions })

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.

The field maxValueLength is used to indicate that an editable text field has a limit on the number of characters entered. If it is -1 there is no limit on the number of characters entered. The field currentValueLength indicates how much of that limit has already been used up. When maxValueLength is set, currentValueLength must also be set.

The field platformViewId references the platform view, whose semantics nodes will be added as children to this node. If a platform view is specified, childrenInHitTestOrder and childrenInTraversalOrder must be empty.

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.

The elevation describes the distance in z-direction between this node and the elevation of the parent.

The thickness describes how much space this node occupies in the z-direction starting at elevation. Basically, in the z-direction the node starts at elevation above the parent and ends at elevation + thickness above the parent.

Implementation

void updateNode({
  int id,
  int flags,
  int actions,
  int maxValueLength,
  int currentValueLength,
  int textSelectionBase,
  int textSelectionExtent,
  int platformViewId,
  int scrollChildren,
  int scrollIndex,
  double scrollPosition,
  double scrollExtentMax,
  double scrollExtentMin,
  double elevation,
  double thickness,
  Rect rect,
  String label,
  String hint,
  String value,
  String increasedValue,
  String decreasedValue,
  TextDirection textDirection,
  Float64List transform,
  Int32List childrenInTraversalOrder,
  Int32List childrenInHitTestOrder,
  Int32List additionalActions,
}) {
  assert(_matrix4IsValid(transform));
  assert(
    scrollChildren == 0 || scrollChildren == null || (scrollChildren > 0 && childrenInHitTestOrder != null),
    'If a node has scrollChildren, it must have childrenInHitTestOrder',
  );
  _updateNode(
    id,
    flags,
    actions,
    maxValueLength,
    currentValueLength,
    textSelectionBase,
    textSelectionExtent,
    platformViewId,
    scrollChildren,
    scrollIndex,
    scrollPosition,
    scrollExtentMax,
    scrollExtentMin,
    rect.left,
    rect.top,
    rect.right,
    rect.bottom,
    elevation,
    thickness,
    label,
    hint,
    value,
    increasedValue,
    decreasedValue,
    textDirection != null ? textDirection.index + 1 : 0,
    transform,
    childrenInTraversalOrder,
    childrenInHitTestOrder,
    additionalActions,
  );
}