Tengo un modelo de vista que expone un flujo de eventos. Tengo ese viewModel inyectado en un componente componible de nivel superior, pero quiero enviar los eventos a otro componente componible (dentro del componente componible de nivel superior). Algo como esto:
@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 } La razón por la que estoy recopilando el flujo en SomeComponent y no en MainScreen es porque necesito acceder a algún estado interno de SomeComponent (en realidad es un ScaffoldState) para procesar los eventos.
Escribí este código en mi aplicación y todo parece estar funcionando, pero no estoy seguro de si es bueno hacerlo.
Mi pregunta es:
¿Hay algún inconveniente en este enfoque que me perdí? ¿Qué puede salir mal aquí?
Pasar un flujo como parámetro está bien. No hay nada especial en un flujo. Es solo otra fuente de datos como cualquier otra cosa. Si no lo pasaste, tendrías que pensar en alguna otra forma de acceder a él y eso probablemente resultaría en romper el patrón de flujo unidireccional al que deben adherirse Composables.