FlexConfig

Interface

Common
@ExperimentalFlexBoxApi
fun interface FlexConfig

Represents a configuration for a flex item within a FlexBox.

This configuration is defined via a lambda that operates on a FlexConfigScope. Because this configuration block is executed during the layout phase rather than the composition phase, reading state variables inside the block will only trigger a layout pass, completely avoiding costly recompositions.

Configuration properties are applied sequentially. If a property (such as grow or shrink) is assigned multiple times within the configuration block, the final call takes precedence.

Functions

fun FlexConfigScope.configure()

Applies the configuration to the given FlexConfigScope.This method is invoked by the layout system during the measurement phase, not during composition.

Code Examples

FlexConfigSample

@OptIn(ExperimentalFlexBoxApi::class)
@Composable
fun FlexConfigSample() {
    // Define reusable FlexConfig - can be a top-level constant
    val FlexibleCentered = FlexConfig {
        grow(1f)
        shrink(0f)
        basis(100.dp)
        alignSelf(FlexAlignSelf.Center)
    }
    FlexBox(modifier = Modifier.fillMaxWidth().height(100.dp)) {
        Box(Modifier.background(Color.Blue).flex(FlexibleCentered))
    }
}