Android 如何在来自多个用例/交互者的viewmodel中使用Kotlin流的组合结果?
背景 我正在尝试用存储库和用例/交互器实现MVVM风格的干净体系结构模式。我希望将Kotlin流用于用例/交互器。所有用例都有相同的设置,结果包装在一个密封的类中 响应包装器:Android 如何在来自多个用例/交互者的viewmodel中使用Kotlin流的组合结果?,android,kotlin,mvvm,clean-architecture,kotlin-flow,Android,Kotlin,Mvvm,Clean Architecture,Kotlin Flow,背景 我正在尝试用存储库和用例/交互器实现MVVM风格的干净体系结构模式。我希望将Kotlin流用于用例/交互器。所有用例都有相同的设置,结果包装在一个密封的类中 响应包装器: sealed class Response<out T> { object Loading : Response<Nothing>() data class Success<T>(val data: T? = null) : Response<T>()
sealed class Response<out T> {
object Loading : Response<Nothing>()
data class Success<T>(val data: T? = null) : Response<T>()
data class Error(val error: ErrorEntity? = null) : Response<Nothing>()
data class Empty(val msg: Int = R.string.empty_string) : Response<Nothing>()
}
interface UseCase<T, Params> {
fun execute(params: Params? = null) : Flow<Response<T>>
}
问题:
根据:,
有多个选项可以组合和展平多个流。哪一个最适合我的问题?我将如何实现这一点 我知道你的问题解决了
下面是如何组合这两个流
firebaseUser.combine(userList).collect { fbuser, userlist ->
//combine the results and set the livedata here
someFunThatSetsLiveData(fbuser, userlist)
}
每当这些流中的一个发出新结果时,都会调用SomeFuntThatSetsLiveData。我看到它解决了您的问题
下面是如何组合这两个流
firebaseUser.combine(userList).collect { fbuser, userlist ->
//combine the results and set the livedata here
someFunThatSetsLiveData(fbuser, userlist)
}
每当这些流中的一个发出新结果时,就会调用SomeFuntThatSetsLiveData