android Jetpack合成-修改器参数是否应仅应用于最外部/最顶部视图?

cld4siwp  于 2023-03-11  发布在  Android
关注(0)|答案(2)|浏览(130)

在jetpack compose中,当把一个修饰符传入我的可组合程序时,这个修饰符应该只应用于最外面的视图,还是应用于所有的子视图?
下面是一个简单的例子:

fun SomeComposable(modifier: Modifier = Modifier) {
    Column(modifier = modifier) {
        Text(modifier = modifier.extraModifiersIfNeeded(), text = "Text")
        Text(modifier = modifier.extraModifiersIfNeeded(), text = "Text")
        Text(modifier = modifier.extraModifiersIfNeeded(), text = "Text")
    }
}

我最初假设这是不正确的,因为传入SomeComposable的任何修饰符也会更改所有子视图。
是否有任何文件使这一点非常清楚?我可以请有一个链接到任何文件?
谢谢大家!

crcmnpdw

crcmnpdw1#

当你将修饰符传递给一个可组合对象时,它应该被提升到对你的用例有意义的最高级别。这是因为你可能会有意想不到的副作用,比如说当你将填充应用到你的例子时。Column将把填充应用到它的内容中,但是这样每个Text可组合对象就会有额外的填充。
此文档说明要“将它们提取到可能的最高级别”。

cwtwac6a

cwtwac6a2#

首先,modifier仅(显式地)应用于那些需要修改的composable函数。
我们将modifier传递给最外层的composable,以使composable函数更加健壮和可重用。

相关问题