如何在 Kotlin 的 MutableStateFlow 中添加、前置和附加值

How to add, prepend and append value in MutableStateFlow in Kotlin

嘿,我是 Kotlin Flow 的新手。我正在使用 MutableStateFlow 在流中添加值、附加值、前置值。

1. 我试图在 collectLatest 之后使用 println() 它没有打印任何东西。谁能解释一下为什么这不起作用。

2. 谁能指导我如何在流程中列出 addappendprepend

例如

附加

我的流量列表值为[1, 2, 3, 4, 5],想添加[6, 7, 8, 9, 10]

输出将是

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

前置

append 之后 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 的相同列表。我想在列表中做 prepend 并且值为 [-5, -4, -3, -2, -1].

输出将是

[-5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

我正在尝试,但我不明白为什么这个功能不起作用。

Main.kt

import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.collectLatest

suspend fun main(args: Array<String>) {
    val flow = MutableStateFlow<List<Int>>(emptyList())
    val updateList = listOf<Int>(-5, -4, -3, -2, -1)

    for (i in 1..10) {
        flow.value += i
    }

    flow.collectLatest {
        println(it)
    }

    println("After Update")
    flow.value = flow.value + updateList

    flow.collectLatest {
        println(it)
    }
}

SharedFlow 或 StateFlow 没有结束,除非它被取消。在其上调用 collectcollectLatest 有点像创建一个 while(true) 循环。它永远不会完成迭代,因为它总是有可能发出另一个值。

the documentation 中,您可以在以“Shared flow never completes.”开头的部分阅读它。”。