Jetpack Compose - 修饰符参数是否应该仅应用于外部/最顶层视图?

Som*_*der 2 android android-jetpack-compose

在 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")
    }
}
Run Code Online (Sandbox Code Playgroud)

我最初认为这是不正确的,因为传递到 SomeComposable 的任何修饰符也会更改所有子视图。

有没有任何文件可以非常清楚地说明这一点?我可以提供任何文档的链接吗?

谢谢你!

OhW*_*One 5

当您将修饰符传递给可组合项时,它应该提升到对您的用例有意义的最高级别。这是因为当您对示例应用填充时,可能会产生意想不到的副作用。会将Column填充应用于其内容,但每个Text可组合项都会有额外的填充。

文档说“将它们提取到尽可能高的级别”。

  • 确实如此,但无论如何它应该是可选的。 (2认同)