srv*_*rvy 7 android kotlin-coroutines android-jetpack-compose kotlin-flow
通过状态流我可以使用
val items by myViewModel.items.collectAsState()
Run Code Online (Sandbox Code Playgroud)
我想共享流不能以这种方式使用。共享流是否适用于 Compose?
Moh*_*aki 12
SharedFlow 应该用于一次性事件(导航、吐司等)。
所以这是收集 SharedFlow 的方法:
@Composable
fun <T> Flow<T>.collectAsEffect(
context: CoroutineContext = EmptyCoroutineContext,
block: (T) -> Unit
) {
LaunchedEffect(key1 = Unit) {
onEach(block).flowOn(context).launchIn(this)
}
}
Run Code Online (Sandbox Code Playgroud)
从技术上讲,您可以像其他任何状态一样收集它Flow- 具有初始值:
flow.collectAsState(initial = 0)
Run Code Online (Sandbox Code Playgroud)
此状态将具有视图呈现期间流发出的最后一个值或初始值。不过,我不确定这是否有意义。
但您也可以将其用作传递需要一次性响应的事件的一种方式,如本答案所示。
| 归档时间: |
|
| 查看次数: |
7698 次 |
| 最近记录: |