填充和发出 StateFlow 列表

Populate and emit StateFlow List

我想使用 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
}

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

有没有不使用 tempList 就可以实现的方法?

谢谢

如果您不想为了将新项目添加到可变列表而使用临时变量,您可以使用加号 (+) 运算符函数。通过这样做 returns 你的新列表(不可变的)具有你可以进一步使用的附加值。

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

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

详细了解 kotlin 集合上的运算符函数 here