Requêtes réactives renvoyant un Flow
Observez la base de données dans Compose.
Requêtes réactives renvoyant un Flow est une leçon Jetpack Compose Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.
Static Reads Go Stale
A one-time query gives you data once, but the table keeps changing. You want the UI to refresh whenever rows are added or removed.
Return a Flow Instead
Change a DAO query to return a Flow. Room now emits a fresh list every single time the underlying table changes. 🔄
@Query("SELECT * FROM Note")
fun observeAll(): Flow<List<Note>>No suspend on Flow Queries
A Flow query is not marked suspend. It returns the stream immediately, and emissions arrive as the data updates over time.
Room Watches the Tables
Behind the scenes Room tracks which tables a query touches. When any of them changes, it re-runs the query and emits a new value.
Collect the Flow Safely
In your ViewModel, collect the Flow inside a coroutine. Use viewModelScope so collection stops when the ViewModel clears.
viewModelScope.launch {
dao.observeAll().collect { notes -> /* update state */ }
}Turn Flow Into State
Convert the stream into observable UI state with stateIn, giving an initial value so the screen has something to show at once.
val notes = dao.observeAll().stateIn(viewModelScope, SharingStarted.Eagerly, emptyList())Observe It in Compose
In the Composable read the StateFlow with collectAsStateWithLifecycle. The list recomposes automatically on every change.
val notes by viewModel.notes.collectAsStateWithLifecycle()Insert and Watch It Appear
Insert a row anywhere and the Flow emits again, so the new item shows up instantly without you refreshing manually.
Map Inside the Flow
You can transform results with map before they reach the UI, like sorting or filtering, all reactively in the stream.
dao.observeAll().map { it.sortedBy(Note::text) }Flows Beat LiveData Here
Flow integrates cleanly with coroutines and Compose, making it the modern choice over LiveData for reactive Room queries.
One Source, Always Current
With reactive queries the database becomes your single source of truth, and the UI is just a reflection of it at every moment.
Quick Check
What happens when a Room DAO query returns a Flow?
Recap: Reactive Reads
You made queries return Flow, collected them into state, and watched Compose redraw on every change. Next you will organize this behind a repository.
Questions Fréquemment Posées
La leçon « Requêtes réactives renvoyant un Flow » est-elle gratuite ?
Oui — le texte complet de « Requêtes réactives renvoyant un 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 Jetpack Compose Academy, passe à CoddyKit PRO. Le cours Jetpack Compose Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Requêtes réactives renvoyant un Flow » ?
Observez la base de données dans Compose. 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 2 sur 4.
Combien de temps prend la leçon « Requêtes réactives renvoyant un 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 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
- Entités, DAO et base de données
- Requêtes réactives renvoyant un Flow
- Le modèle dépôt
- Stratégie de mise en cache prioritairement hors ligne