A widget that displays its children in a vertical array.
To cause a child to expand to fill the available vertical space, wrap the child in an Expanded widget.
The Column widget does not scroll (and in general it is considered an error to have more children in a Column than will fit in the available room). If you have a line of widgets and want them to be able to scroll if there is insufficient room, consider using a Block.
For a horizontal variant, see Row.
If you only have one child, then consider using Align or Center to position the child.
Layout algorithm
Layout for a Column proceeds in six steps:
- Layout each child a null or zero flex factor (e.g., those that are not
Expanded) with unbounded vertical constraints and the incoming
horizontal constraints. If the
crossAxisAlignment
isCrossAxisAlignment.stretch
, instead use tight horizontal constraints that match the incoming max width. - Divide the remaining vertical space among the children with non-zero flex factors (e.g., those that are Expanded) according to their flex factor. For example, a child with a flex factor of 2.0 will receive twice the amount of vertical space as a child with a flex factor of 1.0.
- Layout each of the remaining children with the same horizontal
constraints as in step 1, but instead of using unbounded vertical
constraints, use vertical constraints based on the amount of space
allocated in step 2. Children with
Flexible.fit
properties that areFlexFit.tight
are given tight constraints (i.e., forced to fill the allocated space), and children withFlexible.fit
properties that areFlexFit.loose
are given loose constraints (i.e., not forced to fill the allocated space). - The width of the Column is the maximum width of the children (which will always satisfy the incoming horizontal constraints).
- The height of the Column is determined by the mainAxisSize property.
If the mainAxisSize property is
MainAxisSize.max
, then the height of the Column is the max height of the incoming constraints. If the mainAxisSize property isMainAxisSize.min
, then the height of the Column is the sum of heights of the children (subject to the incoming constraints). - Determine the position for each child according to the
mainAxisAlignment
and thecrossAxisAlignment
. For example, if themainAxisAlignment
isMainAxisAlignment.spaceBetween
, any vertical space that has not been allocated to children is divided evenly and placed between the children.
- Inheritance
Constructors
-
Column({Key key, MainAxisAlignment mainAxisAlignment: MainAxisAlignment.start, MainAxisSize mainAxisSize: MainAxisSize.max, CrossAxisAlignment crossAxisAlignment: CrossAxisAlignment.center, TextBaseline textBaseline, List<Widget> children: const
[] }) -
Creates a vertical array of children.
Properties
- children → List<Widget>
-
The widgets below this widget in the tree.
read-only, inherited - crossAxisAlignment → CrossAxisAlignment
-
How the children should be placed along the cross axis.
read-only, inherited - direction → Axis
-
The direction to use as the main axis.
read-only, inherited - hashCode → int
-
Get a hash code for this object.
read-only, inherited - key → Key
-
Controls how one widget replaces another widget in the tree.
read-only, inherited - mainAxisAlignment → MainAxisAlignment
-
How the children should be placed along the main axis.
read-only, inherited - mainAxisSize → MainAxisSize
-
How much space space should be occupied in the main axis.
read-only, inherited - runtimeType → Type
-
A representation of the runtime type of the object.
read-only, inherited - textBaseline → TextBaseline
-
If aligning items according to their baseline, which baseline to use.
read-only, inherited
Operators
-
operator ==(
other) → bool -
The equality operator.
inherited
Methods
-
createElement(
) → MultiChildRenderObjectElement -
RenderObjectWidgets always inflate to a
RenderObjectElement
subclass.inherited -
createRenderObject(
BuildContext context) → RenderFlex -
Creates an instance of the
RenderObject
class that thisRenderObjectWidget
represents, using the configuration described by thisRenderObjectWidget
.inherited -
debugFillDescription(
List<String> description) → void -
Add additional information to the given description for use by toString.
inherited -
didUnmountRenderObject(
RenderObject renderObject) → void -
A render object previously associated with this widget has been removed from the tree. The given RenderObject will be of the same type as returned by this object's createRenderObject.
inherited -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a non-existent method or property is accessed.
inherited -
toString(
) → String -
Returns a string representation of this object.
inherited -
toStringShort(
) → String -
A short, textual description of this widget.
inherited -
updateRenderObject(
BuildContext context, RenderFlex renderObject) → void -
Copies the configuration described by this
RenderObjectWidget
to the givenRenderObject
, which will be of the same type as returned by this object'screateRenderObject
.inherited