是否有办法覆盖MutableState
的基础值的setter
基本上,我希望实现非MutableState的确切行为
object MyClass2 {
val myProperty2: Int = 0
set(value) {
if (value>= 0) {
field = value
}
}
}
使用myProperty2 = -3
将执行我的自定义setter,并且不会更新值,因为不满足if
条件。
object MyClass1 {
val myProperty1: MutableState<Int> = mutableStateOf(0)
set(value) {
if (value.value >= 0) {
field = value
}
}
}
使用myProperty1.value = -3
将*不*执行我的自定义setter,因为我更改的是基础值,而不是MutableState
本身
这与this question有关,但答案只查找状态更改。(自动更新值)。我希望仅在满足条件时更改状态。
1条答案
按热度按时间6ioyuze21#
只要我们的代码是基于接口的,我们就可以使用组合和委托来解决这类问题,在这种情况下,我们可以创建自己的
MutableState
实现,然后根据需要实现所有的东西,可能会委托给原始的可变状态,只要它有意义: