0

为了实现与Transformation.map()on相同的功能StateFlow,我使用以下代码,它工作正常:

val menuCategoryNames = _menuCategories.mapLatest { menuCategories ->
    menuCategories.map { "${it.name}" }
}.stateIn(viewModelScope, SharingStarted.Lazily, emptyList())

但它看起来很难看,有什么办法让它更易读、更优雅?

4

1 回答 1

1

我为这种情况创建了以下扩展:

inline fun <T, R> Flow<Iterable<T>>.mapLatestIterable(crossinline transform: (T) -> R): Flow<List<R>> =
    mapLatest { it.map(transform) }

你可以像这样使用它:

_menuCategories
    .mapLatestIterable { "${it.name}" }
    .stateIn(viewModelScope, SharingStarted.Lazily, emptyList())
于 2021-08-12T03:27:10.780 回答