填充并发出 StateFlow 列表

Joh*_*Doe 9 android kotlin kotlin-stateflow

我想使用 StateFlow。但目前,我找不到任何可以帮助我的讲座。

我面临一个问题:首先,我有一个包含字符串列表的单例,我想要一些“容易”理解的东西,即使它不是现在的目标目的。目的是用字符串填充并发出列表(稍后它将是一个复杂的对象)。

class CustomStateFlow() {
    private val _custom = MutableStateFlow(emptyList<String>())
    val custom: StateFlow<List<String>> = _custom

    fun addString(string: String) {
        val tempList = _custom.value.toMutableList()
        tempList.add(string)
        _custom.value = tempList
}
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但我不喜欢临时列表...没有,我无法触发片段中自定义的“收集”。

有没有办法在不使用 tempList 的情况下实现这一目标?

感谢您

Jee*_*ede 3

如果您不想使用临时变量来将新项目添加到可变列表中,您可以使用加号 (+) 运算符函数。通过这样做,您将返回一个新列表(不可变),其中包含您可以进一步使用的附加值。

所以伪代码就变成了这样:val newList = oldMutableList + newItem

同样,您可以从列表中删除项目,例如val newList = oldMutableList - itemToRemove

kotlin Collection 上阅读有关运算符函数的更多信息!