Jetpack Compose Academy · Leçon

derivedStateOf et snapshotFlow

Calculez et observez efficacement l’état dérivé.

Leçon 4 sur 413 étapes

derivedStateOf et snapshotFlow est une leçon Jetpack Compose Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.

Computing Values from State

Sometimes a value depends on other state, like a button enabled only when a form is valid. Computing it well avoids wasteful recomposition.

Meet derivedStateOf

A derivedStateOf creates state from a calculation. It only notifies readers when the computed result actually changes, not on every input tweak.

val isValid by remember {
    derivedStateOf { name.isNotBlank() && age > 0 }
}

It Filters Out Noise

If many state reads feed one boolean, derivedStateOf recomputes often but emits only when the boolean flips. The UI redraws far less.

A Scroll Example

Showing a scroll-to-top button only when scrolled past item 5 is perfect for derivedStateOf, since the index changes constantly.

val showButton by remember {
    derivedStateOf { listState.firstVisibleItemIndex > 5 }
}

Always Remember It

Wrap derivedStateOf in remember so the derived state survives recomposition. Without remember you would rebuild it every redraw.

Meet snapshotFlow

A snapshotFlow turns Compose state into a Kotlin Flow. You collect it inside an effect to react to state changes outside composition.

snapshotFlow { listState.firstVisibleItemIndex }
    .collect { index -> log(index) }

Run It in LaunchedEffect

Because collecting is suspending, you place a snapshotFlow inside a LaunchedEffect. It bridges Compose state into coroutine-based work.

LaunchedEffect(listState) {
    snapshotFlow { listState.firstVisibleItemIndex }
        .collect { save(it) }
}

Combine with Flow Operators

Since it is a real Flow, you can chain operators like distinctUntilChanged or debounce to control how often you react.

snapshotFlow { query }
    .debounce(300)
    .collect { search(it) }

derivedStateOf vs snapshotFlow

Use derivedStateOf to feed the UI a computed value, and snapshotFlow to push state changes into side effects like logging or saving.

Avoid Naive Recomputation

Reading scroll state directly in the body recomposes every frame. derivedStateOf caps the redraws to when the meaningful result changes.

Both Make UIs Efficient

Together these tools keep Compose fast: derivedStateOf shrinks recomposition, and snapshotFlow moves reactions off the composition path.

Quick Check

Recall what each tool is optimized for.

Recap: derivedStateOf & snapshotFlow

Awesome! derivedStateOf computes efficient UI values that emit only on real change, while snapshotFlow streams Compose state into coroutines. ⚡

Gratuit pour commencer

Apprends Kotlin avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
30
Leçons
120

Questions Fréquemment Posées

La leçon « derivedStateOf et snapshotFlow » est-elle gratuite ?

Oui — le texte complet de « derivedStateOf et snapshotFlow » 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 « derivedStateOf et snapshotFlow » ?

Calculez et observez efficacement l’état dérivé. 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 4 sur 4.

Combien de temps prend la leçon « derivedStateOf et snapshotFlow » ?

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. LaunchedEffect pour les coroutines
  2. rememberCoroutineScope pour les événements
  3. DisposableEffect et nettoyage
  4. derivedStateOf et snapshotFlow
← Retour à Jetpack Compose Academy