Kotlin 流程图 - 即使值相同也发出信号

Har*_*abh 2 android kotlin android-jetpack-compose

我想知道 kotlin flow flatMap 与 jetpack compose 一起使用

我有一个搜索流程,每次搜索值发生变化时我都会调用 api。

var search = MutableStateFlow("")
Run Code Online (Sandbox Code Playgroud)

并调用api

var allItems = search.flatMapLatest{query->
  flow{
           emit(repository.getAllItems(query)
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但在一种情况下除外。当搜索值已经是“”空字符串,并且我尝试刷新页面时,平面图内的代码不起作用,因为搜索值已经是空字符串,要刷新,我尝试通过更改来再次点击 api 调用搜索值“”以触发写入 fla 映射内的 api 调用。那么即使搜索值相同,可以做些什么来使这个平面图工作。

Ham*_*had 5

使用 SharedFlow 而不是 StateFlow,因为 StateFlow 默认执行distinctUntilChanged()

参考: https: //kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/distinct-until-changed.html


归档时间:

查看次数:

4718 次

最近记录:

3 年,4 月 前