Sre*_*noy 1 android kotlin android-jetpack-compose
为什么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)
)
}
}
Run Code Online (Sandbox Code Playgroud)
apply总是返回this输出。您可以this在内部进行更改,但如果修饰符是不可变的,您希望基于当前修饰符创建一个新的修饰符。这就是为什么你border被忽略了。
相反,您可以使用run,并且您必须返回一些内容:新创建的修饰符或this. 查看有关kotlin 范围函数的更多信息。
val selected by remember { mutableStateOf(true) }
val selectableModifier = Modifier
.padding(horizontal = 5.dp, vertical = 8.dp)
.run {
if (selected) {
border(
BorderStroke(1.dp, MaterialTheme.colors.primaryVariant),
RoundedCornerShape(13.dp)
)
} else {
this
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |