FrameNode class

Inheritance
Available extensions

Constructors

FrameNode({String name = '', double x = 0, double y = 0, double? width, double? height, SceneColor? fill, SceneColor? borderColor, double borderWidth = 1, double corner = 0, double? cornerTopLeft, double? cornerTopRight, double? cornerBottomRight, double? cornerBottomLeft, double? minWidth, double? maxWidth, double? minHeight, double? maxHeight, double opacity = 1, bool visible = true, NodeLayout layout = NodeLayout.absolute, bool clip = false, double gap = 8, double? padding, double? paddingLeft, double? paddingTop, double? paddingRight, double? paddingBottom, List<double?>? columns, double? cellPadding, double? cellPaddingLeft, double? cellPaddingTop, double? cellPaddingRight, double? cellPaddingBottom, SceneMainAxisAlignment mainAlign = SceneMainAxisAlignment.start, SceneCrossAxisAlignment crossAlign = SceneCrossAxisAlignment.center, List<SceneNode> children = const []})
Padding comes in as the grammar spells it — one number when one number says it, four names when it does not — rather than as a SceneEdges, which the file has no way to write.

Properties

bindings → Map<String, SceneBinding>
Where each property's value comes from, when it is not a literal: property key → SceneBinding.
finalinherited
borderColor ↔ SceneColor?
A line around the node, or none. Two fields rather than one value, because the file's vocabulary is flat named arguments and a Border(...) would be a construct the grammar does not have.
getter/setter pairinherited
borderWidth ↔ double
getter/setter pairinherited
cellPadding ↔ SceneEdges
Space inside every cell of a table. Cells are laid out by the table rather than by their own boxes, so this is where their breathing room has to be said; on any other layout it means nothing.
getter/setter pair
children → List<SceneNode>
final
clip ↔ bool
Whether children are cut at the frame's edge and corners rather than drawn past them — a viewport, a thumbnail's mask.
getter/setter pair
columns ↔ List<double?>
The column tracks, when layout is NodeLayout.table. Each is a size in the same three-valued vocabulary as a node's: null hugs the widest cell in the column, a number is fixed, double.infinity takes what is left. A column nobody declared hugs.
getter/setter pair
corner ↔ double
getter/setter pairinherited
corners ↔ SceneCorners
The corner radii. corner reads and writes them as one number — what they are for most nodes.
getter/setter pairinherited
crossAlign ↔ SceneCrossAxisAlignment
getter/setter pair
fill ↔ SceneColor?
getter/setter pairinherited
fx → Map<(Object, String), Object>
The evaluated plane: per-frame contributions composed OVER the authored values above, keyed by (writer, property) in writer-stack order — the order is normative (× does not bit-commute). Motion lanes and app Effects write here; Save never reads it; a cancelled writer clears its own entries and the authored value was never touched.
finalinherited
gap ↔ double
getter/setter pair
hashCode → int
The hash code for this object.
no setterinherited
height ↔ double?
getter/setter pairinherited
heightFills → bool
no setterinherited
layout ↔ NodeLayout
getter/setter pair
mainAlign ↔ SceneMainAxisAlignment
getter/setter pair
maxHeight ↔ double?
getter/setter pairinherited
maxWidth ↔ double?
getter/setter pairinherited
measured ↔ SceneRect?
Laid-out rect in artboard coordinates, swept after each frame by whichever renderer measured it.
getter/setter pairinherited
minHeight ↔ double?
getter/setter pairinherited
minWidth ↔ double?
Bounds on the laid-out size, when a node has them: a card no narrower than its title, a column no wider than a line of reading. Null is no bound.
getter/setter pairinherited
name ↔ String
The node's identity — the field name in the file, and SOURCE-LEVEL ONLY. A compiled scene leaves it empty: Dart has no field-name reflection, and at runtime a node's identity is the object, which is what makes scene.headline a typed reference rather than a lookup. The editor, which parsed the source, is what fills this in.
getter/setter pairinherited
opacity ↔ double
getter/setter pairinherited
padding ↔ SceneEdges
getter/setter pair
repeated ↔ SceneRepeat?
Drawn once per item of SceneRepeat.items, or null for a frame drawn once. Built by repeating in a compiled scene; rebuilt from the recorded binding by bindRepeats in one that was parsed.
getter/setter pair
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
typeName → String
no setteroverride
visible ↔ bool
Whether the node is drawn and laid out at all. Not opacity zero: a hidden node takes no room in a row, and a column closes over it. The boolean a component most often exposes — show the badge, hide the footer — which is why it is a property and not an effect.
getter/setter pairinherited
width ↔ double?
Size along each axis, three-valued in one field:
getter/setter pairinherited
widthFills → bool
Whether this node takes what the parent gives along each axis.
no setterinherited
x ↔ double
getter/setter pairinherited
y ↔ double
getter/setter pairinherited

Methods

animate({MotionTrack? opacity, MotionTrack? translateX, MotionTrack? translateY, MotionTrack? scale, MotionTrack? rotate, MotionTrack? gap, MotionTrack? fill}) → AnimateGroup

Available on FrameNode, provided by the FrameNodeAnimate extension

animate({MotionTrack? opacity, MotionTrack? translateX, MotionTrack? translateY, MotionTrack? scale, MotionTrack? rotate}) → AnimateGroup

Available on SceneNode, provided by the SceneNodeAnimate extension

clearFxWriter(Object writer) → void
inherited
effect() → Effect
Mint an app-side fx writer. Handles are the only app surface — two independent effects on one property compose instead of colliding, and clearing one leaves the others (sketch 25).
inherited
fxRendered(String prop) → Object
The composed value the renderer should draw: authored base folded with every contribution through the derived operator table — opacity and scale multiply, translations and rotation add, everything else replaces in stack order.
inherited
hasFx(String prop) → bool
Whether any writer currently contributes to prop — the renderer asks this where the authored value's absence means something (a null fill draws no decoration; a composed fill draws one).
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
removeFx(Object writer, String prop) → void
inherited
toString() → String
A string representation of this object.
inherited
writeFx(Object writer, String prop, Object value) → void
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Methods

repeating<T>({required List<T> over, required List<SceneNode> row(T item), String name = '', double x = 0, double y = 0, double? width, double? height, SceneColor? fill, SceneColor? borderColor, double borderWidth = 1, double corner = 0, double opacity = 1, NodeLayout layout = NodeLayout.absolute, double gap = 8, double? padding, double? paddingLeft, double? paddingTop, double? paddingRight, double? paddingBottom, SceneMainAxisAlignment mainAlign = SceneMainAxisAlignment.start, SceneCrossAxisAlignment crossAlign = SceneCrossAxisAlignment.center}) → FrameNode
A frame drawn once per item of over, its cells built by row.