为什么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] 删除。
我来说两句