我正在创建这样的MutableStateFlow:
val intSet = MutableStateFlow(HashSet<Int>())
稍后,我想更新这个流中的集合:
intSet.value.add(0)
这似乎不起作用(集合会更新,但不会通知观察者(。我发现它的工作方式:
val list = HashSet<Int>(intSet.value)
list.add(0)
intSet.value = list
但它创建了集合的副本,所以它看起来不适合我。有没有更简单的方法可以在StateFlow中更新集合?
MutableFlow
不检查集合内容的更改。只有当集合引用发生更改时,它才会发出更改。
使用不可变的Set
并使用+=
运算符添加新元素。这基本上将创建新的Set
并触发更改。
val intSetFlow = MutableStateFlow(setOf<Int>())
intSetFlow.value += 0