在可组合项中监听单个实时事件

问题描述 投票:0回答:1

我有一个基于结果从 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,但没有帮助。

android android-jetpack-compose android-livedata
1个回答
0
投票

不幸的是,谷歌没有找到更好的解决方案,然后建议创建一些像consumeEvent这样的函数:

fun consumeSomeSingleEvent() {
    exampleSingleLiveEvent = exampleSingleLiveEvent.value = false
}

您应该在编辑单个事件后调用此函数并执行逻辑。

没有找到官方文档,但我在一些与 Compose 相关的 Google 文档中看到了该建议。

© www.soinside.com 2019 - 2024. All rights reserved.