Gestione intenciones y acciones del usuario
Impulse los cambios de estado a partir de eventos de la interfaz
Gestione intenciones y acciones del usuario es una lección gratuita de Kotlin Multiplatform Academy en CoddyKit. Esta es la lección 3 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.
La interfaz pregunta, usted decide
Cuando un usuario toca un botón, la interfaz no debería ejecutar la lógica por sí sola. Envía un intent al ViewModel, que decide qué sucede.
Dé nombre a sus intents
Modele cada posible acción del usuario como una sealed class. Así, cada intent que la pantalla puede emitir tiene nombre y tipo, y es imposible escribirlo mal.
sealed class HomeIntent {
object Refresh : HomeIntent()
data class Search(val q: String) : HomeIntent()
}Un único punto de entrada
Exponga una única función onIntent. Todos los eventos de la pantalla pasan por ella, lo que le proporciona un único lugar ordenado para dirigir el comportamiento.
fun onIntent(intent: HomeIntent) {
// route to the right handler
}when dirige cada acción
Dentro de onIntent, un when coincide con cada tipo de intent. Como la clase es sealed, el compilador garantiza que cubra todos los casos.
when (intent) {
HomeIntent.Refresh -> refresh()
is HomeIntent.Search -> search(intent.q)
}Los controladores actualizan el estado
Cada controlador realiza su trabajo y después actualiza el StateFlow. La interfaz vuelve a representarse a partir de ese único estado, exactamente como antes.
private fun refresh() = scope.launch {
_state.update { it.copy(isLoading = true) }
}¿Por qué no usar métodos públicos?
Podría exponer muchos métodos públicos, pero un único canal de intent hace visible todo el contrato de la pantalla en un solo tipo. Es limpio y fácil de probar.
Incluya los datos en el intent
Los intents que necesitan datos de entrada utilizan una data class. La consulta o el identificador del usuario viajan dentro de la propia acción.
data class Search(val query: String) : HomeIntent()Los eventos puntuales son diferentes
El estado persiste, pero un toast o una navegación ocurren una sola vez. Para estos one-off events, use un Channel o un SharedFlow, no un StateFlow.
Emita eventos con un Channel
Mantenga un Channel privado para los eventos y expóngalo como un Flow. La interfaz lo recopila para mostrar mensajes o navegar una sola vez.
private val _events = Channel<String>()
val events = _events.receiveAsFlow()Ambas aplicaciones, el mismo flujo
Android envía intents desde Compose e iOS desde SwiftUI, pero ambos llegan al mismo onIntent. El comportamiento nunca podrá divergir entre plataformas.
Un ciclo predecible
Entra el intent y sale el estado: este loop unidireccional hace que la pantalla sea fácil de comprender, depurar y probar. No hay rutas secundarias ocultas.
Comprobación rápida
Comprobemos cómo deben llegar los eventos de la interfaz a la lógica compartida.
Resumen
Modele las acciones como un tipo intent sealed, diríjalas mediante un único onIntent y actualice el estado desde allí. Use un Channel para los eventos puntuales. 🚀
Preguntas frecuentes
¿La lección «Gestione intenciones y acciones del usuario» es gratis?
Sí — el texto completo de «Gestione intenciones y acciones del usuario» 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 «Gestione intenciones y acciones del usuario»?
Impulse los cambios de estado a partir de eventos de la interfaz 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 3 de 4.
¿Cuánto tiempo toma la lección «Gestione intenciones y acciones del usuario»?
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
- Una base de ViewModel multiplataforma
- Exponga el estado de la interfaz como StateFlow
- Gestione intenciones y acciones del usuario
- Vincule el ViewModel a cada interfaz