ParentDataWidget<T extends ParentData> class
Null safety
Base class for widgets that hook ParentData information to children of RenderObjectWidgets.
This can be used to provide per-child configuration for RenderObjectWidgets with more than one child. For example, Stack uses the Positioned parent data widget to position each child.
A ParentDataWidget is specific to a particular kind of ParentData. That
class is T
, the ParentData type argument.
This example shows how you would build a ParentDataWidget to configure a
FrogJar
widget's children by specifying a Size for each one.
class FrogSize extends ParentDataWidget<FrogJarParentData> {
const FrogSize({
Key? key,
required this.size,
required Widget child,
}) : super(key: key, child: child);
final Size size;
@override
void applyParentData(RenderObject renderObject) {
final FrogJarParentData parentData = renderObject.parentData! as FrogJarParentData;
if (parentData.size != size) {
parentData.size = size;
final RenderFrogJar targetParent = renderObject.parent! as RenderFrogJar;
targetParent.markNeedsLayout();
}
}
@override
Type get debugTypicalAncestorWidgetClass => FrogJar;
}
See also:
- RenderObject, the superclass for layout algorithms.
- RenderObject.parentData, the slot that this class configures.
- ParentData, the superclass of the data that will be placed in
RenderObject.parentData slots. The
T
type parameter for ParentDataWidget is a ParentData. - RenderObjectWidget, the class for widgets that wrap RenderObjects.
- StatefulWidget and State, for widgets that can build differently several times over their lifetime.
- Inheritance
- Object
- DiagnosticableTree
- Widget
- ProxyWidget
- ParentDataWidget
- Implementers
Constructors
- ParentDataWidget({Key? key, required Widget child})
-
Abstract const constructor. This constructor enables subclasses to provide
const constructors so that they can be used in const expressions.
const
Properties
- child → Widget
-
The widget below this widget in the tree. [...]
final, inherited
- debugTypicalAncestorWidgetClass → Type
-
The RenderObjectWidget that is typically used to set up the ParentData
that applyParentData will write to. [...]
read-only
- hashCode → int
-
The hash code for this object. [...]
@nonVirtual, read-only, inherited
- key → Key?
-
Controls how one widget replaces another widget in the tree. [...]
final, inherited
- runtimeType → Type
-
A representation of the runtime type of the object.
read-only, inherited
Methods
-
applyParentData(
RenderObject renderObject) → void - Write the data from this widget into the given render object's parent data. [...]
-
createElement(
) → ParentDataElement< T> -
Inflates this configuration to a concrete instance. [...]
override
-
debugCanApplyOutOfTurn(
) → bool - Whether the ParentDataElement.applyWidgetOutOfTurn method is allowed with this widget. [...]
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of
DiagnosticsNode
objects describing this node's children. [...]@protected, inherited -
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node. [...]
inherited
-
debugIsValidRenderObject(
RenderObject renderObject) → bool -
Checks if this widget can apply its parent data to the provided
renderObject
. [...] -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a non-existent method or property is accessed. [...]
inherited
-
toDiagnosticsNode(
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep. [...]
inherited
-
toString(
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String -
A string representation of this object. [...]
inherited
-
toStringDeep(
{String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a string representation of this node and its descendants. [...]
inherited
-
toStringShallow(
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a one-line detailed description of the object. [...]
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator. [...]
@nonVirtual, inherited