你需要在带有@Composable注解的范围内调用可组合函数。
Box() {
val color = colorResource(R.color.black)
Text(
modifier = Modifier.align(Alignment.TopEnd).drawBehind {
drawCircle(
color = color,
radius = 96.00f
)
},
text = "X"
)
}
colorResource是一个@Composable函数。
@Composable
@ReadOnlyComposable
fun colorResource(@ColorRes id: Int): Color {
val context = LocalContext.current
return if (Build.VERSION.SDK_INT >= 23) {
ColorResourceHelper.getColor(context, id)
} else {
@Suppress("DEPRECATION")
Color(context.resources.getColor(id))
}
}
但是 Modifier.drawBehind 的 lambda 表达式不是这样的
fun Modifier.drawBehind(
onDraw: DrawScope.() -> Unit
) = this.then(
DrawBackgroundModifier(
onDraw = onDraw,
inspectorInfo = debugInspectorInfo {
name = "drawBehind"
properties["onDraw"] = onDraw
}
)
)
您可以查看
此答案,了解带有@Composable注释的函数、lambda或参数与不带注释的函数之间的区别。