SizeConstraintsAwareComponent

fun ResourcesScope.SizeConstraintsAwareComponent(style: Style? = null, content: ComponentScope.(SizeConstraints) -> Component): Component

Utility for creating a layout tree that depends on its own and/or its children's size.

For example, Component A is returned if it fits within the specified width otherwise Component B is returned.

Example:

SizeConstraintsAwareComponent { sizeConstraints ->
val textComponent = Text(textSize = 16.sp, text = "Some text to measure")

val textOutputSize = Size()

textComponent.measure(
context,
SizeSpec.makeSizeSpec(0, UNSPECIFIED),
SizeSpec.makeSizeSpec(0, UNSPECIFIED),
textOutputSize)

// Small component to use in case textComponent doesn’t fit within
// the current layout.
val imageComponent = Image(drawable = drawableRes(R.drawable.ic_launcher))

// Assuming sizeConstraints.hasBoundedWidth == true
val doesTextFit = textOutputSize.width <= sizeConstraints.maxWidth

if (doesTextFit) textComponent else imageComponent
}