ZStack class
A widget that positions its children relative to the edges of its box.
This class is useful if you want to overlap several children in a simple way, for example having some text and an image, overlaid with a gradient and a button attached to the bottom.
Each child of a ZStack widget is either positioned or non-positioned. Positioned children are those wrapped in a Positioned widget that has at least one non-null property. The stack sizes itself to contain all the non-positioned children, which are positioned according to alignment (which defaults to the top-left corner in left-to-right environments and the top-right corner in right-to-left environments). The positioned children are then placed relative to the stack according to their top, right, bottom, and left properties.
The stack paints its children in order with the first child being at the bottom. If you want to change the order in which the children paint, you can rebuild the stack with the children in the new order. If you reorder the children in this way, consider giving the children non-null keys. These keys will cause the framework to move the underlying objects for the children to their new locations rather than recreate them at their new location.
For more details about the stack layout algorithm, see RenderStack.
If you want to lay a number of children out in a particular pattern, or if you want to make a custom layout manager, you probably want to use CustomMultiChildLayout instead. In particular, when using a ZStack you can't position children relative to their size or the stack's own size.
{@tool snippet}
Using a ZStack you can position widgets over one another.
ZStack(
[
Container(
width: 100,
height: 100,
color: Colors.red,
),
Container(
width: 90,
height: 90,
color: Colors.green,
),
Container(
width: 80,
height: 80,
color: Colors.blue,
),
],
)
{@end-tool}
- Inheritance
- Available Extensions
- CenterExtension
- FilterExtension
- ScrollExtension
- VxAnimatedContainerWidgetExtension
- VxBadgeExtension
- VxCardExtension
- VxContainerWidgetExtension
- VxGestureExtensions
- VxGlassWidgetExtension
- VxObjectExtensions
- VxOpacityExtension
- VxPaddingExtensions
- VxRandomContainerWidgetExtension
- VxRoutesWidgetsExtension
- VxShapesExtension
- VxShiftWidgetExt
- VxShimmerExtension
- VxSizedBoxExtension
- VxSkeletonExtension
- VxThemeExtension
- VxToggleExtension
- VxTransformExtension
- VxWidgetsExtension
- VxZoomExtensions
Constructors
Properties
- alignment → AlignmentGeometry?
-
How to align the non-positioned and partially-positioned children in the
stack.
final
-
children
→ List<
Widget> -
List of widgets in the stack.
final
- clip → Clip?
-
Defaults to Clip.hardEdge.
final
- fit → StackFit?
-
How to size the non-positioned children in the stack.
final
- 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
-
build(
BuildContext context) → Widget -
Describes the part of the user interface represented by this widget.
override
-
createElement(
) → StatelessElement -
Creates a StatelessElement to manage this widget's location in the tree.
inherited
-
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
-
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