【发布时间】:2020-09-05 14:27:23
【问题描述】:
我在 Android 中看到了新的 Jetpack Compose,并决定去看看。我一直在尝试理解一些关于可组合的基本概念。
我的问题是:composable functions 可以调用non-composable 函数吗?
我已经用谷歌搜索了。
【问题讨论】:
标签: android kotlin android-jetpack-compose
我在 Android 中看到了新的 Jetpack Compose,并决定去看看。我一直在尝试理解一些关于可组合的基本概念。
我的问题是:composable functions 可以调用non-composable 函数吗?
我已经用谷歌搜索了。
【问题讨论】:
标签: android kotlin android-jetpack-compose
我的问题是:可组合函数可以调用不可组合函数吗?
是的。 Kotlin 中的几乎所有内容都以函数调用的形式结束,并且您可用的大多数函数都是不可组合的。
这是 Google 的一些 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() 这样的协程构建器)。
【讨论】: