修饰符与 .apply 一起使用时不起作用

Sreekant Shenoy

为什么border在与 一起使用时不应用修饰符.apply { }

val selected = remember { mutableStateOf(true) }

val selectableModifier = Modifier
    .padding(horizontal = 5.dp, vertical = 8.dp)
    .apply {
    // this changes, but border is not applied
    println("$selected changed") 
    if (selected) {
        border(
            BorderStroke(1.dp, MaterialTheme.colors.primaryVariant),
            RoundedCornerShape(13.dp)
        )
    }
}
菲利普·杜霍夫

apply总是返回this输出。您可以this在内部进行更改,但如果修饰符是不可变的,您希望基于当前修饰符创建一个新的修饰符。这就是为什么你border被忽略了。

相反,您可以使用run,并且您必须返回一些内容:新创建的修饰符或this. 查看有关kotlin 范围函数的更多信息

val selected by remember { mutableStateOf(true) }

val selectableModifier = Modifier
    .padding(horizontal = 5.dp, vertical = 8.dp)
    .run {
        // this changes, but border is not applied
        println("$selected changed")
        if (selected) {
            border(
                BorderStroke(1.dp, MaterialTheme.colors.primaryVariant),
                RoundedCornerShape(13.dp)
            )
        } else {
            this
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章