# WFlexible A utility-first wrapper for Flutter's `Flexible` that controls flex factor and fit through className utilities; renders a `Spacer` when no child is given. - [Basic Usage](#basic-usage) - [Constructor](#constructor) - [Props](#props) - [Supported Utility Classes](#supported-utility-classes) - [Styling Examples](#styling-examples) - [Related Documentation](#related-documentation) ```dart WFlexible( className: 'flex-1 flex-grow', child: WText('Flexible Child', className: 'text-blue-500 text-center'), ); ``` ## Basic Usage `WFlexible` corresponds to the CSS `flex` property: place it inside a [WFlex](wflex.md) and use `flex-x` to set its flex factor and `flex-grow` / `flex-auto` / `flex-none` to set its fit. If `child` is omitted, `WFlexible` renders a `Spacer` with the resolved `flex` value, which is handy for flexible gaps and layout fillers. Visibility utilities such as `hide`, `show`, and `sm:hide` conditionally render the widget based on screen size. ```dart WFlexible( className: 'flex-1', child: WText('Flexible Item'), ); ``` ## Constructor ```dart WFlexible({ Key? key, dynamic className, int? flex, FlexFit? fit, Widget? child, }); ``` ## Props | Prop | Type | Default | Description | |:---|:---|:---|:---| | `className` | `dynamic` | `null` | Wind utility class string controlling flex factor and fit. | | `flex` | `int?` | `null` | Flex factor; overrides any `flex-x` utility. Falls back to `1` when neither the `flex` parameter nor a `flex-x` utility is set. | | `fit` | `FlexFit?` | `null` | How the child fills available space; overrides any `flex-grow` / `flex-auto` / `flex-none` utility. Defaults to `FlexFit.loose` when unset. | | `child` | `Widget?` | `null` | The widget to make flexible. When omitted, a `Spacer` is rendered instead. | ## Supported Utility Classes | Class Type | Example | Documentation | |:---|:---|:---| | Responsive Design | `sm:`, `xs:`, `md:` | [Responsive Design](../concepts/responsive-design.md) | | Flex-x | `flex-1`, `flex-2` | [Flex-x](../flex/flex-x.md) | | Flex Fit Classes | `flex-grow`, `flex-auto` | [Flex Fit Classes](../flex/flex-fit.md) | | Display Classes | `hide`, `show`, `sm:hide` | [Display](../layout/display.md) | ## Styling Examples A flexible item that grows to fill its row: ```dart WFlex( className: 'flex-row gap-2', children: [ WContainer(className: 'w-16 bg-gray-300'), WFlexible( className: 'flex-1 flex-grow', child: WContainer(className: 'bg-blue-500 h-10'), ), ], ); ``` A spacer pushing items apart (no child): ```dart WFlex( className: 'flex-row', children: [ WText('Left', className: 'text-gray-700 dark:text-gray-200'), WFlexible(className: 'flex-1'), WText('Right', className: 'text-gray-700 dark:text-gray-200'), ], ); ``` ## Related Documentation - [WFlex](wflex.md) — the flex layout WFlexible lives inside. - [WFlexContainer](wflexcontainer.md) — styled container with flex layout. - [Flex-x](../flex/flex-x.md) — flex factor utilities. - [Flex Fit Classes](../flex/flex-fit.md) — flex fit utilities.