我在Android中看到了新的Jetpack Compose,并决定去看看。我一直在努力理解一些关于可堆肥的基本概念。我的问题是:composable functions
可以调用non-composable
函数吗?我在谷歌上搜索过,但没有结果。
我的问题是:可组合函数能调用不可组合函数吗?
是。Kotlin中的几乎所有内容最终都是一个函数调用,并且大多数可用的函数都是不可组合的。
以下是谷歌的一个示例Compose UI代码:
@Composable
fun NewsStory() {
val image = imageResource(R.drawable.header)
Column(
modifier = Modifier.padding(16.dp)
) {
val imageModifier = Modifier
.preferredHeight(180.dp)
.fillMaxWidth()
Image(image, modifier = imageModifier,
contentScale = ContentScale.Crop)
Spacer(Modifier.preferredHeight(16.dp))
Text("A day in Shark Fin Cove")
Text("Davenport, California")
Text("December 2018")
}
}
其中,以下功能不是@Composable
:
imageResource()
Modifier.padding()
Modifier.preferredHeight()
Modifier.fillMaxWidth()
规则是,用@Composable
标记的函数需要由另一个标记为@Composable
的函数或可组合函数的一个小家族的最终消费者调用。这让人想起协程,其中suspend
函数需要由其他suspend
函数或suspend
函数的一个小的最终消费者家族(例如,像launch()
这样的协程构建器(调用。