我看到了Android中的新Jetpack Compose,并决定将其签出。我一直在尝试了解有关可组合物的一些基本概念。
我的问题是:composable functions
是否可以调用non-composable
函数?
我没有搜索过Google。
答案 0 :(得分:3)
我的问题是:可组合函数可以调用非组合函数吗?
是的。 Kotlin中的几乎所有内容都会作为函数调用结束,并且您可以使用的大多数功能都是不可组合的。
以下是Google的示例撰写用户界面代码之一:
@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
函数的一小群最终用户之一调用(例如,像{{1 }}。