android - 可以将流从一个可组合传递到另一个吗?

标签 android kotlin android-jetpack-compose

我有一个显示事件流的 View 模型。我将该 viewModel 注入(inject)到顶级可组合中,但我想将事件发送到另一个可组合(在顶级可组合内)。
像这样的东西:

@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
}
我在 SomeComponent 中收集流量的原因而不是 MainScreen是因为我需要访问 SomeComponent 的一些内部状态(它实际上是一个 ScaffoldState)用于处理事件。
我在我的应用程序中编写了这段代码,一切似乎都正常,但我不确定这是否是一件好事。
我的问题是:
我错过了这种方法有什么缺点吗?这里可能出了什么问题?

最佳答案

将流作为参数传递很好。流没有什么特别之处。它只是另一个数据源,就像其他任何东西一样。如果你没有把它传入,你将不得不想出一些其他的方法来访问它,这可能会导致打破 Composables 应该遵守的单向流模式。

关于android - 可以将流从一个可组合传递到另一个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69898899/

相关文章:

android - 强制停止 Android 应用程序时不检索 Sqlite 数据库记录

android stringbuilder 编辑文本

android-studio - Kotlin 'when'-如何在Android Studio中获得 Lint 警告

android - 如何在使用 PointerInput 修改器时添加点击时的波纹效果

android - 获取元素 Jetpack Compose 的高度

java - Libgdx - 将舞台添加到屏幕结构

android - 如何在Android中将壁纸设置为设备的整个屏幕

java - Android Studio,缺少android.support.annotation包

android - 如何在kotlin中将imageview转换为bytearray

kotlin - Jetpack 撰写 : Notify changes in StateFlow