FlexBox class

A flexible box layout widget that implements the CSS Flexbox specification.

FlexBox provides a powerful and flexible way to arrange child widgets in one or two dimensions. It supports all major flexbox features including direction, wrapping, alignment, spacing, and responsive sizing.

Basic Usage

FlexBox(
  direction: FlexDirection.row,
  children: [
    FlexItem(child: Text('Item 1')),
    FlexItem(child: Text('Item 2')),
    FlexItem(child: Text('Item 3')),
  ],
)

Layout Direction

The direction property controls the primary axis of the layout:

Wrapping Behavior

The wrap property controls how items wrap to new lines:

Alignment and Justification

  • justifyContent: Controls alignment along the main axis
  • alignItems: Controls alignment along the cross axis for all items
  • alignContent: Controls alignment of the entire flex container when wrapping

Spacing and Padding

  • padding: Internal padding around the container
  • rowGap: Space between items horizontally
  • columnGap: Space between items vertically

Responsive Design

Use FlexItem widgets as children to control individual item sizing:

FlexBox(
  children: [
    FlexItem(flexGrow: 1, child: Text('Flexible')),
    FlexItem(width: SizeUnit.viewportSize * 0.3, child: Text('Fixed')),
  ],
)

Scrolling and Overflow

Control overflow behavior with horizontalOverflow and verticalOverflow:

RTL Support

The layout automatically respects the textDirection and handles RTL languages correctly, reversing the flow direction when appropriate.

Inheritance
Implementers
Available extensions

Constructors

FlexBox({Key? key, FlexDirection direction = FlexDirection.row, FlexWrap wrap = FlexWrap.none, int? maxItemsPerLine, int? maxLines, EdgeSpacingGeometry padding = EdgeSpacing.zero, SpacingUnit rowGap = SpacingUnit.zero, SpacingUnit columnGap = SpacingUnit.zero, BoxAlignmentGeometry alignItems = BoxAlignmentGeometry.start, BoxAlignmentContent alignContent = BoxAlignmentContent.start, BoxAlignmentBase justifyContent = BoxAlignmentBase.start, TextDirection? textDirection, bool reversePaint = false, ScrollController? verticalController, ScrollController? horizontalController, DiagonalDragBehavior diagonalDragBehavior = DiagonalDragBehavior.free, LayoutOverflow horizontalOverflow = LayoutOverflow.hidden, LayoutOverflow verticalOverflow = LayoutOverflow.hidden, TextBaseline? textBaseline, Clip clipBehavior = Clip.hardEdge, BorderRadiusGeometry? borderRadius, List<Widget> children = const []})
Creates a flexible box layout container with the specified properties.
const

Properties

alignContent BoxAlignmentContent
The alignment of the flex container's lines when wrapping is enabled.
final
alignItems BoxAlignmentGeometry
The default cross-axis alignment for all child items.
final
asAbsoluteItem Widget

Available on Widget, provided by the WidgetExtension extension

Explicitly wraps this widget as an AbsoluteItem.
no setter
asFlexItem Widget

Available on Widget, provided by the WidgetExtension extension

Explicitly wraps this widget as a FlexItem.
no setter
borderRadius BorderRadiusGeometry?
The border radius applied to the container's background and clipping.
final
children List<Widget>
The list of child widgets to layout.
final
clipBehavior Clip
How to clip the content when it overflows the bounds.
final
columnGap SpacingUnit
The vertical spacing between adjacent flex items.
final
diagonalDragBehavior DiagonalDragBehavior
Controls how diagonal drag gestures are interpreted.
final
direction FlexDirection
The direction of the main axis for this flex container.
final
hashCode int
The hash code for this object.
no setterinherited
horizontalController ScrollController?
Controller for horizontal scrolling when horizontal overflow is enabled.
final
horizontalOverflow LayoutOverflow
How to handle content that exceeds the horizontal bounds.
final
justifyContent BoxAlignmentBase
The main-axis alignment for all child items.
final
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
maxItemsPerLine int?
The maximum number of items allowed per line when wrapping is enabled.
final
maxLines int?
The maximum number of lines allowed when wrapping is enabled.
final
padding EdgeSpacingGeometry
The internal padding applied to the flex container.
final
reversePaint bool
Whether to reverse the paint order of children.
final
rowGap SpacingUnit
The horizontal spacing between adjacent flex items.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
textBaseline TextBaseline?
The text baseline to use for aligning text within the layout.
final
textDirection TextDirection?
The text direction for resolving directional properties.
final
verticalController ScrollController?
Controller for vertical scrolling when vertical overflow is enabled.
final
verticalOverflow LayoutOverflow
How to handle content that exceeds the vertical bounds.
final
wrap FlexWrap
Controls how flex items wrap when they exceed the container's size.
final

Methods

aspectRatio(double aspectRatio, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the aspect ratio constraint for this widget.
bottom(PositionUnit bottom, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the distance from the bottom edge of the parent container.
build(BuildContext context) Widget
Builds the widget tree for this flex container.
override
constrained({SizeUnit? minWidth, SizeUnit? maxWidth, SizeUnit? minHeight, SizeUnit? maxHeight, Key? key}) Widget

Available on Widget, provided by the WidgetExtension extension

Sets comprehensive size constraints including both minimum and maximum bounds.
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.
override
flexGrow(double flexGrow, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the flex grow factor for this widget within a flex container.
flexShrink(double flexShrink, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the flex shrink factor for this widget within a flex container.
height(SizeUnit height, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the height of this widget using a SizeUnit.
id(Object valueKey) Widget

Available on Widget, provided by the WidgetExtension extension

Assigns a ValueKey to this widget using the provided value.
key(Key key) Widget

Available on Widget, provided by the WidgetExtension extension

Assigns a Key to this widget.
left(PositionUnit left, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the distance from the left edge of the parent container.
maxHeight(SizeUnit maxHeight, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the maximum height constraint for this widget using a SizeUnit.
maxSized({SizeUnit? maxWidth, SizeUnit? maxHeight, Key? key}) Widget

Available on Widget, provided by the WidgetExtension extension

Sets maximum width and height constraints simultaneously.
maxWidth(SizeUnit maxWidth, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the maximum width constraint for this widget using a SizeUnit.
minHeight(SizeUnit minHeight, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the minimum height constraint for this widget using a SizeUnit.
minSized({SizeUnit? minWidth, SizeUnit? minHeight, Key? key}) Widget

Available on Widget, provided by the WidgetExtension extension

Sets minimum width and height constraints simultaneously.
minWidth(SizeUnit minWidth, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the minimum width constraint for this widget using a SizeUnit.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
paintOrder(int paintOrder, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the paint order for this widget within its parent container.
position(PositionType position, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the position type for this widget to control positioning context.
positioned({PositionUnit? top, PositionUnit? left, PositionUnit? bottom, PositionUnit? right, Key? key}) Widget

Available on Widget, provided by the WidgetExtension extension

Positions the widget using multiple edge offsets simultaneously.

Available on Widget, provided by the WidgetExtension extension

Sets the distance from the right edge of the parent container.
selfAligned(BoxAlignmentGeometry alignSelf, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the alignment of this widget within its parent flex container.
sized({SizeUnit? width, SizeUnit? height, Key? key}) Widget

Available on Widget, provided by the WidgetExtension extension

Sets both width and height dimensions simultaneously.
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
top(PositionUnit top, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the distance from the top edge of the parent container.
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) 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
width(SizeUnit width, [Key? key]) Widget

Available on Widget, provided by the WidgetExtension extension

Sets the width of this widget using a SizeUnit.

Operators

operator ==(Object other) bool
The equality operator.
inherited