LiveData 转换为 StateFlow/SharedFlow

问题描述

StateFlow / SharedFlow 中这种实时数据转换的等效代码是什么?

val myLiveData: LiveData<MyLiveData> = Transformations
                    .switchMap(_query) {
                        if (it == null) {
                           AbsentLiveData.create()
                        } else {
                           repository.load()
                     }

基本上,我想听每个查询更改以对返回的内容做出反应。因此,欢迎使用类似于使用 StateFlow / SharedFlow 的任何东西。

解决方法

switchMapflows 中已弃用,应使用 flatMaptransformtransformLatest 之一将一种类型的流转换为其他类型。一个例子是

val myFlow = flowOf<Int>().transform<Int,String> { flowOf("$it") }} 

我想您可以对 StateFlowSharedFlows 使用相同的逻辑。