FlexBox (Flex)
This is equivalent to the Flex widget in Flutter. Everything you can do with the Box widget, you can also do with FlexBox. However, the main difference is that you can specify flex attributes for it.
Usage
FlexBox(
style: Style(
$box.color.blue(),
$flex.direction.horizontal(),
$flex.mainAxisAlignment.spaceBetween(),
),
children: [
Box(
child: Text('Box 1'),
),
Box(
child: Text('Box 2'),
),
Box(
child: Text('Box 3'),
),
],
)HBox
is equivalent to the Row widget, but it also accepts Box styling attributes.
HBox(
style: Style(
$box.color.blue(),
$flex.mainAxisAlignment.spaceBetween(),
),
children: [...],
)VBox
is equivalent to the Column widget, but it also accepts Box styling attributes.
VBox(
style: Style(
$box.color.blue(),
$flex.mainAxisAlignment.spaceBetween(),
),
children: [...],
)Utilities
The Flex utility provides an easy way to compose FlexSpecAttribute. The $flex variable is an instance of the FlexSpecUtility class, serving as an entry point for building the styling attributes for StyledFlex, StyledRow, StyledColumn, FlexBox, HBox, and VBox.
direction
Control the axis along which the Flex, Row, or Column distributes space and positions its children.
// Set the direction to horizontal.
$flex.direction.horizontal();
// Set the direction to vertical.
$flex.direction.vertical();mainAxisAlignment
Customize how children are aligned along the main axis.
// Align children at the start of the main axis.
$flex.mainAxisAlignment.start();
// Space children evenly across the main axis.
$flex.mainAxisAlignment.spaceEvenly();crossAxisAlignment
Align children within the cross-axis of the flex container.
// Align children to the center of the cross axis.
$flex.crossAxisAlignment.center();
// Stretch children to fill the cross axis.
$flex.crossAxisAlignment.stretch();mainAxisSize
Define the size of the main axis.
// Set the main axis to take only as much space as its children need.
$flex.mainAxisSize.min();
// Set the main axis to take as much space as available.
$flex.mainAxisSize.max();verticalDirection
Specify the vertical ordering of children.
// Order children from top to bottom.
$flex.verticalDirection.up();
// Order children from bottom to top.
$flex.verticalDirection.down();textDirection
Control the direction of text and children positioning if relevant.
// Set text and children positioning to left-to-right.
$flex.textDirection.ltr();
// Set text and children positioning to right-to-left.
$flex.textDirection.rtl();textBaseline
Adjust the alignment of children relative to the text baseline.
// Align children by their alphabetic baseline.
$flex.textBaseline.alphabetic();
// Align children by their ideographic baseline.
$flex.textBaseline.ideographic();clipBehavior
Define how the flex container should clip its content.
// Do not clip any overflow of children.
$flex.clipBehavior.none();
// Clip any overflow of children to the container's bounds.
$flex.clipBehavior.hardEdge();gap
Set the space (gap) between each child in the flex container.
// Set a gap of 8 logical pixels between children.
$flex.gap(8);