如何将协程 Flow<List<T>> 转换为 List<T>

How to convert coroutines Flow<List<T>> to List<T>

如何将 kotlinx.coroutines.flow 列表转换为普通数据 class 列表。

由于要从嵌套列表流转为单个列表,因此需要平面映射操作:

suspend fun <T> Flow<List<T>>.flattenToList() = 
        flatMapConcat { it.asFlow() }.toList()

用法示例:

suspend fun main() {
    val flowOfLists: Flow<List<Int>> = flowOf(listOf(1, 2), listOf(3, 4))
    val flatList: List<Int> = flowOfLists.flattenToList()
    println(flatList)
}