es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo transformar Flow>> a Flow>

Tengo una consulta de base de datos que devuelve la lista de índices de objetos para un día determinado, es decir:
kotlin
getIndexesOfDay(día: Day): Flow<List>

Ahora necesito escuchar los detalles de cada índice, por ejemplo:
kotlin
getDetailsByIndex(index: String): Flow

Entonces, la pregunta es: ¿cómo puedo lograr esto usando Flows?

Dos restricciones importantes:

Los cambios en los índices deben propagarse al flujo final;
Los cambios en cualquier objeto Detalles también deben actualizar el flujo.

Lo que ya he intentado:
kotlin
getIndexesOfDay(díaDeHoy)
.map { índices ->
índices?.map {
mIndex->
getDetailsByIndex(mIndex)
}
}

Pero devuelve un Flow<List<Flow

>> en lugar del Flow<List
> deseado.

¡Cualquier ayuda es apreciada!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar el operador flatMapMerge para aplanar el Flow<List<Flow<Details>>> en un Flow<List<Details>>:

    getIndexesOfDay(diaDeHoy)
              .flatMapMerge { indices ->
                  indices?.map {
                          mIndice->
                      getDetailsByIndex(mIndice)
                  }
              }
    

    Esto fusionará los flujos interiores en un solo flujo y emitirá la lista de objetos Details.

Comments are closed.