Skip to main content

Wrap

Lays out children in runs, automatically wrapping to the next line when space runs out. Similar to CSS flexbox with flex-wrap: wrap.

Basic Usage

widgets.Wrap{
Direction: widgets.WrapAxisHorizontal,
Spacing: 8,
RunSpacing: 8,
Children: []core.Widget{
chip("Go"),
chip("Rust"),
chip("TypeScript"),
chip("Python"),
chip("JavaScript"),
},
}

Properties

PropertyTypeDescription
DirectionWrapAxisFlow direction (WrapAxisHorizontal or WrapAxisVertical)
Spacingfloat64Space between children within a run
RunSpacingfloat64Space between runs
AlignmentWrapAlignmentMain axis positioning within each run
CrossAxisAlignmentWrapCrossAlignmentCross axis positioning within each run
RunAlignmentRunAlignmentDistribution of runs in cross axis
Children[]core.WidgetChild widgets

Direction

Set Direction to control the flow direction:

  • WrapAxisHorizontal (default): Children flow left-to-right, wrapping to new rows below
  • WrapAxisVertical: Children flow top-to-bottom, wrapping to new columns to the right
// Vertical wrap: items flow down, then wrap to the next column
widgets.Wrap{
Direction: widgets.WrapAxisVertical,
Spacing: 8,
RunSpacing: 12,
Children: tags,
}

Alignment

Wrap provides three alignment properties:

PropertyPurposeValues
AlignmentMain axis positioning within each runStart, End, Center, SpaceBetween, SpaceAround, SpaceEvenly
CrossAxisAlignmentCross axis positioning within each runStart, End, Center
RunAlignmentDistribution of runs in cross axisStart, End, Center, SpaceBetween, SpaceAround, SpaceEvenly
widgets.Wrap{
Alignment: widgets.WrapAlignmentCenter,
CrossAxisAlignment: widgets.WrapCrossAlignmentCenter,
RunAlignment: widgets.RunAlignmentSpaceEvenly,
Spacing: 8,
RunSpacing: 8,
Children: chips,
}

WrapOf Helper

Use WrapOf for concise creation with spacing:

widgets.WrapOf(8, 12, // spacing, runSpacing
chip("Tag 1"),
chip("Tag 2"),
chip("Tag 3"),
)

When to Use Wrap vs Row/Column

Use CaseWidget
Fixed number of items in a lineRow or Column
Items should wrap when they don't fitWrap
Need flexible children (Expanded)Row or Column
Dynamic tags, chips, or badgesWrap