我知道我可以像代码A一样使用derivedStateOf
创建基于State<T>
变量的Flow,而resultListAllMInfo
是StateFlow<EResult<List<MInfo>>>
类型。
现在我希望得到一个StateFlow<EResult<List<MInfo>>>
类型基于流_listSortBy
在代码B,我该怎么做?
顺便说一句,_listMInfo
是代码B中的Flow<StateFlow<EResult<List<MInfo>>>>
类型。
新增内容:
我可以使用代码C吗?当代码C中的_listSortBy
发生变化时,_listMInfo
是否会自动更新?
代码A
class RecordSoundViewModel @Inject constructor(
): ViewModel() {
var sortByState by mutableStateOf(ESortBy.START_PRIORITY)
private set
val resultListAllMInfo: StateFlow<EResult<List<MInfo>>> by derivedStateOf {
handelMInfo.listAll(sortByState).stateIn(viewModelScope, SharingStarted.WhileSubscribed(), EResult.LOADING)
}
}
fun listAll(eSortBy: ESortBy): Flow<EResult<List<MInfo>>>
代码B
class RecordSoundViewModel @Inject constructor(
): ViewModel()
{
private val _listSortBy = MutableStateFlow(ESortBy.START_PRIORITY)
// _listMInfo is Flow<StateFlow<EResult<List<MInfo>>>>
private val _listMInfo = _listSortBy .map { handelMInfo.listAll(it).stateIn(viewModelScope, SharingStarted.WhileSubscribed(), EResult.LOADING)}
}
代码C
class RecordSoundViewModel @Inject constructor(
): ViewModel()
{
private val _listSortBy = MutableStateFlow(ESortBy.START_PRIORITY)
private val _listMInfo = handelMInfo.listAll(_listSortBy.value)
}
图片1
2条答案
按热度按时间kgqe7b3p1#
我仍然不完全理解你的意思,但我认为你指的是流与流之间的合并,所以你可以尝试这种方式。
6mzjoqzu2#
这里有一个简单的例子,当你想使用合并流