2

我正在像这样创建 MutableStateFlow:

val intSet = MutableStateFlow(HashSet<Int>())

稍后我想在这个流程中更新集合:

intSet.value.add(0)

这似乎不起作用(集合更新,但未通知观察者)。我发现它的工作方式:

val list = HashSet<Int>(intSet.value)
list.add(0)
intSet.value = list

但它会创建集合的副本,所以它看起来不适合我。有没有更简单的方法来更新 StateFlow 中的集合?

4

1 回答 1

5

MutableFlow不检查集合内容的变化。只有当集合引用发生更改时,它才会发出更改。

使用 immutableSet并使用+=运算符添加新元素。这基本上会创建新Set的并触发更改。

val intSetFlow = MutableStateFlow(setOf<Int>())
intSetFlow.value += 0
于 2020-12-24T19:58:17.567 回答