جمع Flows في Android وiOS
ربط Flow بـ Compose وSwift بأمان
جمع Flows في 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
الأسئلة الشائعة
هل درس «جمع Flows في Android وiOS» مجاني؟
نعم — نص درس «جمع Flows في Android وiOS» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Multiplatform Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Multiplatform Academy 4 دروس في المجموع.
ماذا ستتعلم في «جمع Flows في Android وiOS»؟
ربط Flow بـ Compose وSwift بأمان تتمرن على Kotlin Multiplatform Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Multiplatform Academy؟
لا تُشترط خبرة سابقة. Kotlin Multiplatform Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «جمع Flows في Android وiOS»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Multiplatform Academy هذا؟
نعم. كل درس في Kotlin Multiplatform Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات Flow في التعليمات البرمجية المشتركة
- StateFlow لحالة الواجهة المشتركة
- العوامل: map وfilter وcombine
- جمع Flows في Android وiOS