Child nodes.
Original props passed to the constructor before any modifications.
OptionalkeyUnique node identifier.
Optional ReadonlynameNode type name.
The Yoga layout engine node.
Current props including defaults and inherited values.
Protected_Renders the node's visual content including background fills, shadows, and borders. This is an internal method used by the render() pipeline.
The skia-canvas 2D rendering context to draw into
The absolute x-coordinate where drawing should begin
The absolute y-coordinate where drawing should begin
The width of the content area to render
The height of the content area to render
ProtectedappendAppends a child node at the specified index.
Child node to append.
Index to insert child at
ProtectedapplyApplies node type-specific default values after inheritance.
Performs final layout adjustments recursively after the main layout calculation.
Whether any node was marked as dirty during finalization.
Processes and appends any children passed in the initial props.
Draws this node, through its mask when it has one.
Every component's drawing arrives here — Text, Image, Chart and Grid override
_renderContent rather than this — so masking one node type means masking all of them.
The two kinds of mask are applied differently because they are different operations. A shape or
path clips, which is a yes-or-no test per pixel and costs nothing but a save/restore. A
gradient cannot: its whole purpose is the answers in between, so the node is composited through
one instead. Both are applied to the node's layout box, before its own transform, which is
what keeps the two consistent with each other.
dither is held on the context around all of it, so the node's mask, background, content and
children are drawn with one answer and whatever draws next is left with its own.
ProtectedresolveProtectedsetApplies layout properties to the Yoga node.
Box properties containing layout values
ProtectedupdateHook for subclasses to update layout based on computed size.
GridItem Node. Theoretically just a BoxNode but typed differently in factory. In runtime, it behaves almost like a BoxNode, but we can detect it if needed, or simply rely on the props being present in the instance.