可以将 Flow 从一个可组合项传递到另一个可组合项吗?

Arp*_*kla 6 android kotlin android-jetpack-compose

我有一个公开事件流的视图模型。我已将 viewModel 注入到顶级可组合项中,但我想将事件发送到另一个可组合项(在顶级可组合项内)。像这样的东西:

@Composable
fun MainScreen(viewModel: MyViewModel) {
    SomeComponent(viewModel.events) 
    // Other Stuff   
}

@Composable
fun SomeComponent(events: Flow<MyEvent>) { // MyEvent is a sealed class
    LaunchedEffect(Unit) {
        events.collect {
            // Process the events
        }
    }
    // Other stuff
}
Run Code Online (Sandbox Code Playgroud)

SomeComponent我收集流而不收集流的原因MainScreen是因为我需要访问某些内部状态SomeComponent(实际上是 ScaffoldState)来处理事件。

我在我的应用程序中编写了这段代码,一切似乎都正常,但我不确定这是否是一件好事。
我的问题是:
这种方法是否有我遗漏的缺点?这里可能会出现什么问题?

And*_*Dev 2

将流作为参数传递就可以了。流并没有什么特别的。它只是另一个像其他数据源一样的数据源。如果您没有传递它,您将不得不想出一些其他方式来访问它,这可能会导致破坏可组合项应遵守的单向流模式。