Наблюдение за таблицами как за Flow
Получайте реактивные обновления при изменении базы данных
«Наблюдение за таблицами как за Flow» — бесплатный урок Kotlin Multiplatform Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Multiplatform Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Why Observe Instead of Poll
Re-running a query by hand misses changes. SQLDelight can push fresh results to you whenever the table changes.
Add the Coroutines Extension
Reactive queries need the coroutines-extensions artifact, which adds Flow support on top of your generated queries.
implementation("app.cash.sqldelight:coroutines-extensions:2.0.2")Turn a Query into a Flow
Call asFlow on any select query to get a Flow that re-emits whenever the underlying table is written.
val flow = queries.selectAll().asFlow()Map to Results
asFlow gives a query holder, so chain mapToList to emit a ready Kotlin list each time the data changes.
val players = queries.selectAll()
.asFlow()
.mapToList(Dispatchers.IO)Single-Row Streams
For one row use mapToOneOrNull, which emits the row or null and updates automatically as that row changes.
queries.selectById(1)
.asFlow()
.mapToOneOrNull(Dispatchers.IO)Collect in Shared Code
You consume the stream by collecting it. Every insert, update or delete to that table triggers a fresh emission.
players.collect { list -> render(list) }Expose It as StateFlow
Wrap the Flow in a StateFlow so your shared ViewModel holds the latest list as a single source of truth.
val state = players.stateIn(scope, SharingStarted.Eagerly, emptyList())Android Collects with Compose
On Android, collectAsState turns the StateFlow into Compose state, so the list recomposes automatically on every change.
val list by viewModel.state.collectAsState()iOS Collects from Swift
On iOS you observe the same StateFlow from Swift and update SwiftUI, so both apps stay in sync with the database.
One Write, Both UIs Update
Insert a row anywhere and every active Flow re-emits. The database becomes the live source driving both platforms.
Pick the Right Dispatcher
Run mapping off the main thread by passing a background dispatcher, keeping the UI smooth while queries run.
Quick Check
You collect selectAll().asFlow().mapToList(...). When does it emit again?
Recap: Live Data
You turned queries into Flows, mapped them to results, exposed StateFlow, and let both UIs update on every write. Your shared database is now reactive. ✅
Изучай Kotlin с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Наблюдение за таблицами как за Flow» бесплатный?
Да — полный текст урока «Наблюдение за таблицами как за Flow» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Multiplatform Academy, подпишись на CoddyKit PRO. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.
Чему я научусь в уроке «Наблюдение за таблицами как за Flow»?
Получайте реактивные обновления при изменении базы данных Ты практикуешь Kotlin Multiplatform Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Multiplatform Academy?
Предыдущий опыт не требуется. Kotlin Multiplatform Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Наблюдение за таблицами как за Flow»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Multiplatform Academy?
Да. Каждый урок Kotlin Multiplatform Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Добавление SQLDelight и написание схем .sq
- Настройка SqlDriver для платформ
- Вставка, запрос и обновление строк
- Наблюдение за таблицами как за Flow