ParentDataWidget<T extends ParentData> class
abstract
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
link
FrogJar
widget's children by specifying a Size for each one.
class FrogSize extends ParentDataWidget<FrogJarParentData> {
const FrogSize({
super.key,
required this.size,
required super.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.
finalinherited
- debugTypicalAncestorWidgetClass → Type
-
Describes the RenderObjectWidget that is typically used to set up the
ParentData that applyParentData will write to.
no setter
- debugTypicalAncestorWidgetDescription → String
-
Describes the RenderObjectWidget that is typically used to set up the
ParentData that applyParentData will write to.
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
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.
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 nonexistent 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.
inherited