Column

Arrange children vertically from top to bottom.

Overview

Column displays its children in a vertical array. It’s one of the most fundamental layout widgets in Shaft.

Basic Usage

Column {
    Text("First")
    Text("Second")
    Text("Third")
}
Column Layout

Main Axis Alignment

Control vertical positioning:

Column(mainAxisAlignment: .start) { }    // Top (default)
Column(mainAxisAlignment: .center) { }   // Center
Column(mainAxisAlignment: .end) { }      // Bottom
Column(mainAxisAlignment: .spaceBetween) { }  // Distribute space

Cross Axis Alignment

Control horizontal positioning:

Column(crossAxisAlignment: .start) { }   // Left
Column(crossAxisAlignment: .center) { }  // Center (default)
Column(crossAxisAlignment: .end) { }     // Right
Column(crossAxisAlignment: .stretch) { } // Fill width

Spacing

Column(spacing: 12) {
    Text("Item 1")
    Text("Item 2")  // 12px below
    Text("Item 3")
}

Using Expanded

Column {
    Text("Header")
    
    Expanded {
        ScrollView { }  // Takes remaining space
    }
    
    Text("Footer")
}

Parameters

ParameterTypeDefault
mainAxisAlignmentMainAxisAlignment.start
crossAxisAlignmentCrossAxisAlignment.center
mainAxisSizeMainAxisSize.max
spacingFloat0

See Also