JSON en Kotlin con ViewModel y JetPack Compose
Creación de una aplicación que se descargue un fichero JSON de Internet usando ViewModel, corutinas, OkHttp y JetPack Compose
Aplicación realizada por el alumno Alejandro Díaz
Más información:
que es una sealed class en kotlin?
Una sealed class (clase sellada) en Kotlin es una clase que restringe la jerarquía de clases. Esto significa que todas las subclases posibles se conocen en tiempo de compilación y deben estar definidas en el mismo paquete o módulo.
En tu código, la usas perfectamente para gestionar el estado de la interfaz de usuario:
Kotlin
sealed class ContactosUiState { object Cargando : ContactosUiState()
data class Exito(val contactos: List<Contacto>) : ContactosUiState()
data class Error(val mensaje: String) : ContactosUiState()
}
Características principales:
1. Exhaustividad en when: La mayor ventaja es que, al usar un bloque when con una sealed class, el compilador sabe si has cubierto todos los casos posibles. Si falta uno, te dará un error, eliminando la necesidad de una cláusula else.
2. Estado Restringido: Es ideal para representar estados que son mutuamente excluyentes (un estado no puede ser «Cargando» y «Éxito» a la vez).
3. No instanciable: No puedes crear una instancia de ContactosUiState directamente (es abstracta por naturaleza).
4. Flexibilidad: A diferencia de un enum, cada subclase de una sealed class puede tener sus propias propiedades y métodos (como Exito que lleva una lista o Error que lleva un mensaje).
Ejemplo de uso en la UI:
Gracias a que es una sealed class, puedes hacer esto en tu Compose:
Kotlin
when (uiState) {
is ContactosUiState.Cargando -> MostrarSpinner()
is ContactosUiState.Exito -> MostrarLista(uiState.contactos)
is ContactosUiState.Error -> MostrarError(uiState.mensaje)
// No hace falta 'else' porque el compilador sabe que no hay más opciones
}


Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.