更新时间:2022-12-30 14:57:08
此问题的***解决方案是将unidirectional flow与SwitchRow
一起使用,@Codecameo建议使用lambda。
但如果要观察Viewmodel
中的MuableState,则可以使用snapshotFlow
%s作为
var greet: MutableState<Boolean> = mutableStateOf(user.pushSetting.greet)
init {
snapshotFlow { greet.value }
.onEach {
updateUser()
}
.launchIn(viewModelScope)
//...
}
从可观察快照状态创建流。(例如,国家持有者 由muableStateOf返回。)SnaphotFlow创建运行的流 块,并发出结果,记录任何快照 被访问的状态。收集继续时,如果新的快照 会更改块访问的状态,则流将运行 块,重新记录被访问的快照状态。如果 块的结果不等于前一个结果,则流程将 发出那个新的结果。(此行为类似于 Flow.DiffertUntilChanged。)收集将无限期地继续进行 除非它被其他流的使用明确取消或限制 运算符。