我有一个基于结果从 A 类发出的 LiveEvent
private val exampleSingleLiveEvent = SingleLiveEvent<Boolean>()
open val show: SingleLiveEvent<Boolean>
get() = exampleSingleLiveEvent
在我的视图模型中,我有以下内容
open val show: SingleLiveEvent<Boolean> get() = A.show
在我的可组合项中,我将其读作
val show by viewModel.show.observeAsState()
问题是单个实时事件的状态在发出后仍然保持不变。 因此,每次我输入撰写时,我都会看到该值为 true。然而,我希望只有当
SingleLiveEvent 会被发出,但并非总是如此。
我在这里缺少什么?
我尝试使用 SideEffect、LaunchedEffect 和 DisposableEffect,但没有帮助。
不幸的是,谷歌没有找到更好的解决方案,然后建议创建一些像consumeEvent这样的函数:
fun consumeSomeSingleEvent() {
exampleSingleLiveEvent = exampleSingleLiveEvent.value = false
}
您应该在编辑单个事件后调用此函数并执行逻辑。
没有找到官方文档,但我在一些与 Compose 相关的 Google 文档中看到了该建议。