# updateNode method

void updateNode ({int id, int flags, int actions, 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 `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 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,
    }) {
      if (transform.length != 16)
        throw new ArgumentError('transform argument must have 16 entries.');
      _updateNode(
        id,
        flags,
        actions,
        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,
      );
    }