问题描述
我不确定如何解决这个问题。
我有一个存储 combine
流的变量。我必须结合一个 MutableSharedFlow 和一个 Flow。这是我使用的代码
val users = combine(
reloadUsers,nicknameQuery.asFlow()
) { reloadUsers,nicknameQuery->
Pair(reloadUsers,nicknameQuery)
}.flatMapLatest { (reloadUsers,nicknameQuery) ->
Log.d(TAG,"Querying users")
repository.users(0,nicknameQuery,reloadUsers == Refresh.FORCE,onFetchError = {
viewmodelScope.launch {
_userListShared.emit(UserListStateEvent.ErrorState(it))
}
}
)
}.stateIn(viewmodelScope,SharingStarted.Lazily,null).asLiveData()
这里是reloadUsers的定义
private val reloadUsers = MutableSharedFlow<Refresh>()
这里是nicknameQuery的定义
private val nicknameQuery = MutableStateFlow<String>("")
我使用 nickbnameQuery 在昵称中运行查询,并使用 reloadUsers 强制从网络获取数据。
在视图模型中,我使用此代码更新 reloadUsers
viewmodelScope.launch {
reloadUsers.emit(Refresh.FORCE)
}
我的问题是我在 reloadUsers 上运行 Refresh.FORCE 后更改了nicknameQuery 的值。因为每次我更改昵称查询时,都会执行组合,但在 reloadUsers 中我再次强制。我想将 MutableSharedFlow 用作“触发器”,因此它仅在我想强制重新加载时才强制重新加载。我应该重置 SharedFlow 的值,但我该如何正确处理?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)