Par Valentin Brosseau / @c4software
Une liste, et une vue de détail.
Simple, mais suffisant pour comprendre les composants.
Dix cartes identiques dans une liste.
Vous écrivez dix fois le même code ?
Un morceau d'interface, écrit une fois, réutilisé partout.
Le même principe que dans le développement web.
@Composable
fun ElementList(
title: String = "Mon titre",
content: String = "Mon contenu",
image: Int? = R.drawable.ic_launcher_foreground,
onClick: () -> Unit = {}
) { … }Un composant est une fonction. Ses paramètres le personnalisent.
@Preview : voir le composant directement dans Android Studio.
Sans lancer l'application sur un téléphone.
LazyColumn {
items(myData) { item ->
ElementList(title = item) {
// Code appelé lors du clic sur un élément de la liste.
}
}
}Une liste : le composant est répété pour chaque élément.
L'utilisateur touche une carte.
Comment afficher le détail ?
var selectedItem by remember { mutableStateOf<String?>(null) }Elle change, l'interface se met à jour : c'est la réactivité.
if (selectedItem != null) {
// Le détail
} else {
// La liste
}Pas d'écran à « rafraîchir » : vous décrivez quoi afficher, et quand.
data class CardContent(
val title: String,
val content: String,
@DrawableRes val image: Int?
)Une data class : une classe faite pour porter des données.
Un paramètre peut être une valeur, une action… ou un composant.
La TopAppBar devient, elle aussi, votre composant.
@Composable.LazyColumn pour les listes.mutableStateOf) : il change, l'interface suit.data class pour structurer les données.Place au TP 🚀