Kotlin流量图-即使值相同,也要发出



我想知道使用喷气背包组成的kotlin流平面图

我有一个搜索流,每次搜索值改变时我都会调用api。

var search = MutableStateFlow("")

并调用api

var allItems = search.flatMapLatest{query->
flow{
emit(repository.getAllItems(query)
}
}

它运行得非常好,但在一种情况下除外。当搜索的值已经是"0"时"一个空字符串,我尝试刷新页面,flatmap中的代码不起作用,因为搜索值已经是空字符串,为了刷新,我再次尝试通过将搜索值更改为"来调用api"为了触发在fla-map中编写的api调用。那么,即使搜索值相同,该怎么做才能使这个平面图工作呢。

使用SharedFlow而不是StateFlow,因为StateFlow在默认情况下执行distinctUntilChanged((

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

最新更新