Progression Partie 9 sur 12

Représenter les états de l’écran

Le repository peut maintenant retourner une liste de Country ou une erreur.

L’interface doit représenter trois situations :

  • le chargement est en cours ;
  • les pays ont été chargés ;
  • le chargement a échoué.

Nous allons regrouper ces situations dans une interface scellée appelée CountryUiState.

Créer CountryUiState

Crée le fichier ui/screen/CountryUiState.kt.

Déclare ensuite les trois états :

ui/screen/CountryUiState.kt
...
import com.composechef.countryexplorer.model.Country
...

sealed interface CountryUiState {
    data object Loading : CountryUiState
    data class Success(val countries: List<Country>) : CountryUiState
    data class Error(val message: String) : CountryUiState
}

Loading ne contient aucune donnée. Success transporte la liste de pays et Error contient le message à afficher.

Comme CountryUiState est scellée, Kotlin connaît tous ses états possibles. Nous pourrons donc les traiter de manière exhaustive avec un when.

Dans la prochaine partie, nous utiliserons ces états dans CountryViewModel.