如何在 Compose 中创建可重用的修饰符?

6 kotlin android-jetpack-compose

我的大多数屏幕(视图)都以 Box 可组合项开始,以包含所有子可组合项(组件)。

// background
Box(
        modifier = Modifier
            .fillMaxSize()
            .background(customColor)
    ) 
{
// foreground
Column()

}
Run Code Online (Sandbox Code Playgroud)

您将如何创建可重用的修改器,而不是必须在每个屏幕上创建修改器属性?

Phi*_*hov 6

在这种简单的情况下,您可以执行以下操作(无需使用then):

fun Modifier.myModifier(customColor: Color) =
    this.fillMaxSize()
        .background(customColor)
Run Code Online (Sandbox Code Playgroud)

如果您需要使用remember或其他用 注释的状态构建器保存修改器中的任何状态,您可以使用Modifier.composed@Composable来完成。例如,以下是如何向修改器添加动画:

fun Modifier.myModifier(customColor: Color): Modifier = composed {
    val animatedColor by animateColorAsState(customColor)
    this.fillMaxSize()
        .background(animatedColor)
}
Run Code Online (Sandbox Code Playgroud)

请注意,在内部composed您应该只使用带状态注释的可组合项,而不是视图。更多详情可在这找到。