0Pricing
Jetpack Compose Academy · Leçon

États activé, désactivé et chargement

Reflétez la disponibilité dans vos boutons.

États activé, désactivé et chargement est une leçon Jetpack Compose Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Jetpack Compose Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Jetpack Compose Academy comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

Buttons Have Moods

A good button reflects reality: ready, blocked, or working. Compose lets you express these states so users always know what is possible. 🚦

The enabled Parameter

Every button takes an enabled flag. Set it to false and the button greys out and ignores taps automatically.

Button(
    onClick = { submit() },
    enabled = false
) { Text("Submit") }

Drive enabled From State

The real power is binding enabled to state. Tie it to validation so the button only activates when input is ready.

Button(
    onClick = { submit() },
    enabled = name.isNotBlank()
) { Text("Submit") }

Disabled Means Blocked

A disabled button still appears, so users see the action exists. Its faded look signals why not yet without an error message.

Show Progress While Working

For slow actions, show a loading state. Track a boolean and swap the label for a spinner while the work runs.

var loading by remember { mutableStateOf(false) }

Disable During Loading

While loading, set enabled = !loading so users cannot double-tap and fire the same action twice.

Button(
    onClick = { loading = true },
    enabled = !loading
) { Text("Save") }

Swap In a Spinner

Inside the content, branch on the flag: show a small CircularProgressIndicator when loading, the label otherwise.

Button(onClick = { }, enabled = !loading) {
    if (loading) CircularProgressIndicator(Modifier.size(18.dp))
    else Text("Save")
}

Size the Spinner Down

The default spinner is large. Constrain it with a Modifier.size so it fits neatly where the label used to sit.

CircularProgressIndicator(
    modifier = Modifier.size(18.dp),
    strokeWidth = 2.dp
)

Reset When Done

When the work finishes, set loading back to false. The label returns and the button becomes tappable again.

onResult = { loading = false }

States Prevent Mistakes

Together, enabled and loading guard your actions: no taps before input is valid, no duplicate taps while work is in flight.

Communicate, Don't Hide

Prefer disabling over hiding a button. A visible-but-disabled control teaches users the path to unlock it.

Quick Check

Your save action takes two seconds and users keep double-tapping it.

Recap: Stateful Buttons

You learned to reflect reality: enabled gates by validity, a loading flag shows progress and blocks repeats. Honest buttons, happy users. 🎯

Questions Fréquemment Posées

La leçon « États activé, désactivé et chargement » est-elle gratuite ?

Oui — le texte complet de « États activé, désactivé et chargement » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Jetpack Compose Academy, passe à CoddyKit PRO. Le cours Jetpack Compose Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « États activé, désactivé et chargement » ?

Reflétez la disponibilité dans vos boutons. Tu pratiques Jetpack Compose Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Jetpack Compose Academy ?

Aucune expérience préalable n'est requise. Jetpack Compose Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « États activé, désactivé et chargement » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Jetpack Compose Academy ?

Oui. Chaque leçon Jetpack Compose Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Button et onClick
  2. Boutons texte, Outlined et à icône
  3. États activé, désactivé et chargement
  4. clickable sur n’importe quel Composable
← Retour à Jetpack Compose Academy