ComposableFieldValue

Creates a ComposableFieldValue with custom content.

Usage

// Simple custom content
@Preview
@Composable
fun CustomContentPreview() = PreviewLab {
val content: @Composable () -> Unit = fieldValue {
ComposableField(
label = "Content",
initialValue = ComposableFieldValue("Icon") {
Icon(Icons.Default.Star, contentDescription = null)
},
choices = listOf(
ComposableFieldValue("Star") { Icon(Icons.Default.Star, null) },
ComposableFieldValue("Heart") { Icon(Icons.Default.Favorite, null) },
ComposableFieldValue("Home") { Icon(Icons.Default.Home, null) }
)
)
}
MyButton(icon = content)
}

// Complex custom content
@Preview
@Composable
fun ComplexContentPreview() = PreviewLab {
val slot: @Composable () -> Unit = fieldValue {
ComposableField(
label = "Slot Content",
initialValue = ComposableFieldValue("Image + Text") {
Row {
Icon(Icons.Default.Image, null)
Text("With Image")
}
},
choices = listOf(
ComposableFieldValue("Text Only") { Text("Simple Text") },
ComposableFieldValue("Image + Text") {
Row {
Icon(Icons.Default.Image, null)
Text("With Image")
}
},
ComposableFieldValue("Complex") {
Column {
Text("Title", style = MaterialTheme.typography.h6)
Text("Subtitle", style = MaterialTheme.typography.body2)
}
}
)
)
}
MyCard(content = slot)
}

// Mixing with predefined values
@Preview
@Composable
fun MixedContentPreview() = PreviewLab {
val content: @Composable () -> Unit = fieldValue {
ComposableField(
label = "Content",
initialValue = ComposableFieldValue.Empty,
choices = listOf(
ComposableFieldValue.Empty,
ComposableFieldValue("Custom Icon") { Icon(Icons.Default.Settings, null) },
ComposableFieldValue.Red32X32,
ComposableFieldValue.SimpleText
)
)
}
MyContainer(trailing = content)
}

Return

A ComposableFieldValue that renders the provided content

Parameters

label

The display label for this value

content

The composable content to render

See also