0Pricing
Android Academy · Leçon

Observer les données avec Flow

Réagissez de manière réactive aux changements de la base de données.

Observer les données avec Flow est une leçon Android 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 Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 4 leçons au total.

Lectures réactives de la base de données

Au lieu d'effectuer une seule requête, Room peut renvoyer un flux qui émet une nouvelle valeur chaque fois que les données sous-jacentes changent. Votre interface utilisateur se met à jour automatiquement.

Renvoyer un flux depuis un DAO

Déclarez le type de retour comme Flow<...>. Remarquez qu'il ne s'agit pas d'une fonction suspendue.

@Query("SELECT * FROM users ORDER BY name")
fun observeUsers(): Flow<List<User>>

Pourquoi ne pas utiliser suspend ici

Une fonction suspend renvoie un seul résultat, puis se termine. Un Flow est un flux continu : il s'agit donc d'une fonction ordinaire qui renvoie l'objet flux, que vous collectez au fil du temps.

Comment Room sait quand émettre à nouveau

Room suit les tables touchées par une requête. Lorsqu'une écriture affecte l'une de ces tables, Room exécute à nouveau la requête et émet le résultat actualisé dans le flux. Tout cela est automatique.

Collecter dans une coroutine

Vous collectez le flux dans une coroutine, généralement dans le ViewModel.

viewModelScope.launch {
    dao.observeUsers().collect { users ->
        _uiState.value = UiState(users)
    }
}

Mapper le flux

Vous pouvez transformer le flux avec des opérateurs comme map avant de l'exposer.

val names: Flow<List<String>> =
    dao.observeUsers().map { list ->
        list.map { it.name }
    }

Le convertir en StateFlow

Convertissez le flux froid d'un DAO en un StateFlow chaud pour l'interface utilisateur avec stateIn.

val uiState = dao.observeUsers()
    .map { UiState(it) }
    .stateIn(
        viewModelScope,
        SharingStarted.WhileSubscribed(5000),
        UiState()
    )

Collecter dans Compose

L'écran collecte cet état en tenant compte du cycle de vie, exactement comme vous l'avez appris précédemment.

@Composable
fun UsersScreen(vm: UserViewModel) {
    val state by vm.uiState
        .collectAsStateWithLifecycle()
    UserList(state.users)
}

La chaîne réactive complète

En résumé :

  • Room émet lorsque les données changent.
  • Le ViewModel transforme les données en état d'interface utilisateur via stateIn.
  • Compose collecte avec collectAsStateWithLifecycle.

Écrivez dans la base de données depuis n'importe quel endroit, et l'écran s'actualise de lui-même.

Source unique de vérité

Ce modèle fait de la base de données la source unique de vérité. L'interface utilisateur ne conserve jamais de copies obsolètes ; elle reflète toujours ce qui est réellement enregistré.

Les écritures déclenchent les mises à jour

Toute insertion, mise à jour ou suppression dans une table observée fait émettre à nouveau le flux : vous n'avez donc pas besoin d'actualiser manuellement la liste après une modification.

suspend fun addUser(u: User) = dao.insert(u)
// observeUsers() flow re-emits automatically

Vérification rapide

Testez votre compréhension de l'observation des données avec Flow.

Récapitulatif

Vous avez appris que :

  • Les méthodes de DAO qui renvoient un Flow émettent à nouveau des valeurs lorsque les données changent.
  • Ce sont des fonctions normales (non suspendues) qui renvoient un flux.
  • Utilisez stateIn et collectAsStateWithLifecycle pour alimenter l'interface utilisateur de manière réactive.
  • La base de données devient la source unique de vérité.

Questions Fréquemment Posées

La leçon « Observer les données avec Flow » est-elle gratuite ?

Oui — le texte complet de « Observer les données avec Flow » 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 Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Observer les données avec Flow » ?

Réagissez de manière réactive aux changements de la base de données. Tu pratiques Android 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 Android Academy ?

Aucune expérience préalable n'est requise. Android 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 « Observer les données avec Flow » ?

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 Android Academy ?

Oui. Chaque leçon Android 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. Entités et DAO
  2. La classe de base de données Room
  3. Requêtes et relations
  4. Observer les données avec Flow
← Retour à Android Academy