Kotlin Multiplatform Academy · Lección

Exponga resultados como Flow

Transmita reactivamente los datos del repositorio a ambas interfaces

Lección 4 de 413 pasos

Exponga resultados como Flow es una lección gratuita de Kotlin Multiplatform Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Multiplatform Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Multiplatform Academy incluye 4 lecciones en total.

Más allá de las llamadas únicas

Una función suspend devuelve un resultado una sola vez, pero las pantallas reales necesitan actualizaciones a lo largo del tiempo. Eso es exactamente lo que ofrece Flow.

Devuelva un Flow

Cambie el repositorio para que devuelva un Flow de su tipo de dominio, de modo que quienes llaman puedan reaccionar a un flujo de resultados.

fun observeUsers(): Flow<List<User>>

Emita con el constructor flow

Construya un flujo mediante el constructor flow y llame a emit para enviar cada nuevo valor a quien lo esté recopilando.

fun observeUsers() = flow { emit(getUsers()) }

Use suspend dentro de Flow

Dentro del constructor puede llamar libremente a funciones suspend, por lo que la obtención de datos de red encaja directamente.

Combine datos locales

Un Flow puede emitir primero datos almacenados en caché y después un resultado nuevo de la red, ofreciendo a la interfaz una vista inmediata que se actualiza.

flow {
    emit(loadCached())
    emit(fetchFresh())
}

Mapee el flujo

Use el operador map en el Flow para transformar cada emisión antes de que la interfaz de usuario la vea.

observeUsers().map { it.sortedBy(User::name) }

Capture los errores en el Flow

Envuelva el flujo con catch para que un fallo de red se convierta en una emisión controlada en lugar de provocar un bloqueo.

observeUsers().catch { emit(emptyList()) }

Recopile en cada plataforma

Ambas aplicaciones recopilan el Flow: Compose mediante collectAsState y SwiftUI a través de un pequeño puente.

scope.launch { repo.observeUsers().collect { render(it) } }

Compartido y limpio

La lógica de Flow reside en commonMain, por lo que ambas plataformas comparten una única fuente de datos reactiva, sin copias.

Una única fuente de verdad

Exponer los datos como un Flow proporciona a toda la aplicación una única fuente de verdad que todos observan y en la que confían.

El repositorio reactivo

Aquí tiene el repositorio como un flujo: emite datos nuevos y nunca permite que un error interrumpa a quien lo recopila.

fun observeUsers(): Flow<List<User>> = flow {
    emit(api.getUsers().toDomain())
}.catch { emit(emptyList()) }

Comprobación rápida

¿Por qué exponer los datos del repositorio como un Flow en lugar de devolverlos una sola vez mediante suspend?

Resumen

Devolver un Flow convierte el repositorio en una fuente reactiva: emite actualizaciones con el tiempo, ambas aplicaciones lo recopilan y los errores permanecen contenidos.

Gratis para empezar

Aprende Kotlin con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Exponga resultados como Flow» es gratis?

Sí — el texto completo de «Exponga resultados como Flow» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Multiplatform Academy, actualiza a CoddyKit PRO. El curso de Kotlin Multiplatform Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Exponga resultados como Flow»?

Transmita reactivamente los datos del repositorio a ambas interfaces Practicas Kotlin Multiplatform Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Kotlin Multiplatform Academy?

No se requiere experiencia previa. Kotlin Multiplatform Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Exponga resultados como Flow»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Kotlin Multiplatform Academy?

Sí. Cada lección de Kotlin Multiplatform Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Defina una interfaz de repositorio
  2. Envuelva la API tras el repositorio
  3. Mapee DTO a modelos de dominio
  4. Exponga resultados como Flow
← Volver a Kotlin Multiplatform Academy