# WFlex
A utility-first flex layout widget that wraps Flutter's `Flex`, controlling direction, alignment, spacing, and overflow through className utilities.
- [Basic Usage](#basic-usage)
- [Constructor](#constructor)
- [Props](#props)
- [Supported Utility Classes](#supported-utility-classes)
- [Styling Examples](#styling-examples)
- [Related Documentation](#related-documentation)
```dart
WFlex(
className: 'flex-col justify-center items-center gap-4',
children: [
WContainer(className: 'w-10 h-10 bg-blue-500'),
WContainer(className: 'w-10 h-10 bg-green-500'),
],
);
```
## Basic Usage
`WFlex` is the Wind equivalent of an HTML `
`. It lays out a list of `children` along a main axis, controlling direction, justification, cross-axis alignment, gap spacing, and overflow with utility classes. When a Flutter `Flex` parameter is passed explicitly, it takes precedence over the matching utility class.
```dart
WFlex(
className: 'flex-row justify-center items-center gap-4',
children: [
WText('Child 1', className: 'text-red-500'),
WText('Child 2', className: 'text-blue-500'),
],
);
```
## Constructor
```dart
WFlex({
Key? key,
dynamic className = '',
Axis? direction,
MainAxisAlignment? mainAxisAlignment,
MainAxisSize? mainAxisSize,
CrossAxisAlignment? crossAxisAlignment,
TextDirection? textDirection,
VerticalDirection verticalDirection = VerticalDirection.down,
TextBaseline? textBaseline,
Clip clipBehavior = Clip.none,
required List
children,
});
```
## Props
| Prop | Type | Default | Description |
|:---|:---|:---|:---|
| `className` | `dynamic` | `''` | Wind utility class string applied to the flex layout. |
| `children` | `List` | **Required** | The widgets laid out along the main axis. |
| `direction` | `Axis?` | `null` | Main-axis direction; overrides any `flex-row` / `flex-col` utility. |
| `mainAxisAlignment` | `MainAxisAlignment?` | `null` | Main-axis alignment; overrides any `justify-*` utility. |
| `mainAxisSize` | `MainAxisSize?` | `null` | Main-axis size; overrides any `axis-min` / `axis-max` utility. |
| `crossAxisAlignment` | `CrossAxisAlignment?` | `null` | Cross-axis alignment; overrides any `items-*` utility. |
| `textDirection` | `TextDirection?` | `null` | Text direction used to resolve `start` / `end` alignment. |
| `verticalDirection` | `VerticalDirection` | `VerticalDirection.down` | Order in which children are laid out vertically. |
| `textBaseline` | `TextBaseline?` | `null` | Baseline used when cross-axis alignment is baseline. |
| `clipBehavior` | `Clip` | `Clip.none` | How overflowing content is clipped. |
## Supported Utility Classes
| Class Type | Example | Documentation |
|:---|:---|:---|
| Responsive Design | `sm:flex-row`, `xs:flex-col` | [Responsive Design](../concepts/responsive-design.md) |
| Flex Direction | `flex-row`, `flex-col` | [Flex Direction](../flex/flex-direction.md) |
| Justify Content | `justify-center`, `justify-start` | [Justify Content](../flex/justify-content.md) |
| Align Items | `items-center`, `items-start` | [Align Items](../flex/align-items.md) |
| Axis Sizes | `axis-max`, `axis-min` | [Axis Sizes](../flex/axis-sizes.md) |
| Gap (Spacing) | `gap-2`, `gap-[4]` | [Gap (Spacing)](../flex/gap.md) |
| Overflow | `overflow-scroll` | [Overflow](../layout/overflow.md) |
| Display Classes | `hide`, `show`, `sm:hide` | [Display](../layout/display.md) |
## Styling Examples
A spaced row of items:
```dart
WFlex(
className: 'flex-row justify-between items-center gap-2',
children: [
WText('Left', className: 'text-gray-700 dark:text-gray-200'),
WText('Right', className: 'text-gray-700 dark:text-gray-200'),
],
);
```
A scrollable column:
```dart
WFlex(
className: 'flex-col gap-4 overflow-scroll',
children: [
WContainer(className: 'w-full h-20 bg-blue-500'),
WContainer(className: 'w-full h-20 bg-green-500'),
WContainer(className: 'w-full h-20 bg-purple-500'),
],
);
```
## Related Documentation
- [WFlexContainer](wflexcontainer.md) — combines a styled container with flex layout.
- [WFlexible](wflexible.md) — flexible child sizing within a flex layout.
- [WContainer](wcontainer.md) — single-child styled box.
- [Flex Direction](../flex/flex-direction.md) — main-axis direction utilities.