VStack class

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 VStack widget does not scroll (and in general it is considered an error to have more children in a VStack 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 ListView.

For a horizontal variant, see HStack.

If you only have one child, then consider using Align or Center to position the child.

{@tool snippet}

This example uses a VStack to arrange three widgets vertically, the last being made to fill all the remaining space.

Using the Column in this way creates two short lines of text with a large Flutter underneath.

///

VStack(
 [
    Text('Deliver features faster'),
    Text('Craft beautiful UIs'),
    Expanded(
      child: FittedBox(
        fit: BoxFit.contain, // otherwise the logo will be tiny
        child: const FlutterLogo(),
      ),
    ),
  ],
)

/// {@end-tool} {@tool snippet}

In the sample above, the text and the logo are centered on each line. In the following example, the crossAlignment is set to CrossAxisAlignment.start, so that the children are left-aligned. The axisSize is set to MainAxisSize.min, so that the column shrinks to fit the children.

VStack(
 [
    Text('We move under cover and we move as one'),
    Text('Through the night, we have one shot to live another day'),
    Text('We cannot let a stray gunshot give us away'),
    Text('We will fight up close, seize the moment and stay in it'),
    Text('It’s either that or meet the business end of a bayonet'),
    Text('The code word is ‘Rochambeau,’ dig me?'),
    Text('Rochambeau!', style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0)),
  ],
  crossAlignment: CrossAxisAlignment.start,
  axisSize: MainAxisSize.min,
)

{@end-tool}

Inheritance
Available Extensions

Constructors

VStack(List<Widget> children, {Key key, MainAxisAlignment alignment = MainAxisAlignment.start, CrossAxisAlignment crossAlignment = CrossAxisAlignment.start, MainAxisSize axisSize = MainAxisSize.min})
const

Properties

alignment MainAxisAlignment
How the children should be placed along the main axis. [...]
final
axisSize MainAxisSize
How much space should be occupied in the main axis. [...]
final
children List<Widget>
List of widgets in the stack.
final
crossAlignment CrossAxisAlignment
How the children should be placed along the cross axis. [...]
final
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

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. [...]
@protected, inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node. [...]
inherited
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