Сбор Flow на Android и iOS
Безопасно связывайте Flow с Compose и Swift
«Сбор Flow на Android и iOS» — бесплатный урок Kotlin Multiplatform Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Multiplatform Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Two Apps, One Stream
Your shared code exposes a Flow, but each platform consumes it differently. The trick is collecting that one stream natively on Android and on iOS.
Compose Loves Flow
On Android, Jetpack Compose turns a Flow into state with collectAsState. Your composable redraws automatically whenever a new value arrives.
val state by viewModel.uiState
.collectAsState()Respect the Lifecycle
Prefer collectAsStateWithLifecycle so collection pauses when the screen is in the background. It saves battery and avoids needless work.
val state by viewModel.uiState
.collectAsStateWithLifecycle()Swift Cannot See suspend
Plain Flow does not bridge to Swift, because collect is a suspend call. Swift needs a callback-friendly wrapper instead.
Wrap Flow for iOS
A common fix is a small wrapper that subscribes and returns a cancel handle. iOS calls a closure on each value and stops when done.
fun watch(
onEach: (UiState) -> Unit
): CloseableUse a CoroutineScope
The wrapper launches collection inside a CoroutineScope it owns. Closing the handle cancels that scope so nothing leaks after the screen is gone.
SwiftUI Subscribes
From SwiftUI you call the wrapper in onAppear, push each value into an ObservableObject, and cancel in onDisappear.
SKIE Smooths the Bridge
Tools like SKIE generate Swift-friendly Flow APIs for you, so iOS devs collect with native async sequences and skip hand-written wrappers.
Always Cancel
However you bridge, make sure collection cancels when the screen disappears. An orphaned collector keeps running and quietly wastes resources.
Logic Stays Shared
Notice the pattern: only the thin collection layer is per platform. The data, operators, and state all stay in shared code where they belong. 🤝
Same Data, Native Feel
Both apps now react to the identical stream, yet each uses its native UI toolkit. That balance is exactly what KMP is built for.
Quick Check
Think about why iOS needs extra help.
Recap
You collected one shared stream two ways: Compose with collectAsStateWithLifecycle, and SwiftUI through a wrapper or SKIE. Shared logic, native UI. 🤝
Изучай Kotlin с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Сбор Flow на Android и iOS» бесплатный?
Да — полный текст урока «Сбор Flow на Android и iOS» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Multiplatform Academy, подпишись на CoddyKit PRO. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.
Чему я научусь в уроке «Сбор Flow на Android и iOS»?
Безопасно связывайте Flow с Compose и Swift Ты практикуешь Kotlin Multiplatform Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Multiplatform Academy?
Предыдущий опыт не требуется. Kotlin Multiplatform Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Сбор Flow на Android и iOS»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Multiplatform Academy?
Да. Каждый урок Kotlin Multiplatform Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы Flow в общем коде
- StateFlow для общего состояния интерфейса
- Операторы: map, filter, combine
- Сбор Flow на Android и iOS