// 定义一个 CompositionLocal 用于共享颜色
val LocalContentColor = compositionLocalOf { Color.Blue}
@Composable
fun ThemedButton() {
// 获取共享的颜色
val buttonColor = LocalContentColor.current
Button(
onClick = { /* Do something */ },
colors = ButtonDefaults.buttonColors(containerColor = buttonColor),
modifier = Modifier.padding(16.dp)
) {
Text("Themed Button")
}
}
@Composable
fun ThemedScreen() {
Column {
// 提供一个新的颜色值
CompositionLocalProvider(LocalContentColor provides Color.Green) {
ThemedButton() // 这个按钮将使用绿色
}
// 提供一个新的颜色值
CompositionLocalProvider(LocalContentColor provides Color.Red) {
ThemedButton() // 这个按钮将使用red
}
}
}
CompositionLocalProvider的使用
最新推荐文章于 2024-10-01 21:21:47 发布