Kir*_*ach 3 collections kotlin kotlin-flow
我正在像这样创建 MutableStateFlow:
val intSet = MutableStateFlow(HashSet<Int>())
Run Code Online (Sandbox Code Playgroud)
稍后我想更新此流程中的集合:
intSet.value.add(0)
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用(集合更新,但观察者没有收到通知)。我发现它的工作方式:
val list = HashSet<Int>(intSet.value)
list.add(0)
intSet.value = list
Run Code Online (Sandbox Code Playgroud)
但它创建了该集合的副本,因此它看起来不适合我。有没有更简单的方法来更新 StateFlow 中的集合?
MutableFlow不检查集合内容的更改。仅当集合引用发生更改时,它才会发出更改。
使用不可变Set并使用+=运算符添加新元素。这基本上将创造新的Set并触发变化。
val intSetFlow = MutableStateFlow(setOf<Int>())
intSetFlow.value += 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1149 次 |
| 最近记录: |