Par Valentin Brosseau / @c4software
Vos listes affichent des données écrites en dur.
Question : et si elles venaient d'un serveur ?
Application → GET /todos → API
Application ← JSON ← APIL'application demande, le serveur répond avec de la donnée.
Ouvrir la connexion, envoyer la requête, décoder le JSON…
Vous écrivez tout ça à la main ?
interface APIService {
@GET("todos")
suspend fun getTodos(): List<Todo>
}Vous décrivez l'API, Retrofit génère le code.
Le JSON devient une liste de Todo.
screens : les écrans.components : les composants utilisés par les écrans.data : l'accès aux données (l'API).Le réseau est lent.
Que voit l'utilisateur pendant ce temps ?
L'appel réseau part dans une coroutine, en parallèle.
L'interface, elle, reste fluide.
when (loadingState.value) {
LOADING_STATES.LOADING -> { Loader() }
LOADING_STATES.LOADED -> { ListItems(items = items.value) { … } }
LOADING_STATES.ERROR -> { Error() }
}Un enum plutôt que des booléens : plus simple à lire.
val loadingState = viewModel.loadingState.collectAsState()
val items = viewModel.itemsList.collectAsState()Le ViewModel met à jour, l'écran suit.
Elles aussi viennent du réseau.
Coil : le composant AsyncImage charge une image depuis son URL.
collectAsState).Place au code 🚀