簡體   English   中英

如何在 Jetpack Compose 中使用 SharedFlow

[英]How to use SharedFlow in Jetpack Compose

使用 state 流我可以使用

val items by myViewModel.items.collectAsState()

我想共享流不能以這種方式使用。 共享流程是否適用於 Compose?

SharedFlow 應用於一次性事件(導航、吐司等...)。

所以這是收集 SharedFlow 的方法:

@Composable
fun <T> Flow<T>.collectAsEffect(
    context: CoroutineContext = EmptyCoroutineContext,
    block: (T) -> Unit
) {
    LaunchedEffect(key1 = Unit) {
        onEach(block).flowOn(context).launchIn(this)
    }
}

從技術上講,您可以像任何其他Flow一樣將其收集為 state - 具有初始值:

flow.collectAsState(initial = 0)

這個 state 將具有在呈現視圖期間流發出的最后一個值,或初始值。 不過,我不確定這是否有意義。

但您也可以將其用作傳遞需要一次性響應的事件的一種方式,如本答案所示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM