0Pricing
Android Academy · درس

أساسيات Kotlin Flow

أصدر تدفقات البيانات واجمعها

أساسيات Kotlin Flow درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 4 دروس في المجموع.

ما هو Flow؟

إن Flow هو تدفق غير متزامن يُصدر قيماً متعددة بمرور الوقت. فكّر فيه كسلسلة قابلة للتعليق يمكنك تحويلها وجمعها.

إنشاء Flow

يتيح لك منشئ flow { } إصدار القيم باستخدام emit، مع إمكانية التعليق مؤقتاً بينها.

fun numbers(): Flow<Int> = flow {
    for (i in 1..3) {
        delay(100)
        emit(i)
    }
}

جمع Flow

لا يفعل التدفق شيئاً حتى تجمعه. والجمع عملية تعليق، لذا تُنفّذ داخل coroutine.

scope.launch {
    numbers().collect { value ->
        println(value)
    }
}

التدفقات الباردة

تكون Flows باردة؛ إذ تُنفّذ كتلة المنشئ من جديد لكل جامع. ويحصل كل جامع من جامعين على تسلسله المستقل الخاص بدءاً من البداية.

التحويل باستخدام map وfilter

تحوّل المعاملات القيم المُصدرة بشكل كسول، ولا تعمل إلا عند الجمع.

numbers()
    .map { it * 10 }
    .filter { it > 10 }
    .collect { println(it) }

معاملات إضافية

  • take(n) — القيم n الأولى فقط.
  • onEach — تأثير جانبي لكل قيمة.
  • distinctUntilChanged — تخطي القيم المتكررة.

معالجة الأخطاء

التقط الاستثناءات الصادرة من المصدر باستخدام المعامل catch.

numbers()
    .map { riskyTransform(it) }
    .catch { e -> emit(-1) }
    .collect { println(it) }

التفاعل مع الإكمال

استخدم onCompletion لتشغيل التعليمات البرمجية عند انتهاء التدفق أو إلغائه.

numbers()
    .onCompletion { println("done") }
    .collect { println(it) }

تغيير خيط المنتج

استخدم flowOn لتشغيل المصدر السابق على Dispatcher محدد من دون التأثير في الجامع.

fun load(): Flow<Data> = flow {
    emit(readFromDisk())
}.flowOn(Dispatchers.IO)

المعاملات النهائية

تنهي بعض المعاملات التدفق وتُرجع قيمة، مثل toList أو first أو reduce. وهي دوال suspend.

val all: List<Int> = numbers().toList()

أين تتألق Flows في Android

تمثّل Flows أي شيء يُصدر قيماً بمرور الوقت: تغيّرات قاعدة البيانات (Room)، وتحديثات الموقع، والبحث أثناء الكتابة، ودمج مصادر بيانات متعددة.

تحقق سريع

اختبر مدى فهمك لأساسيات Flow.

مراجعة

لقد تعلمت ما يلي:

  • ينشئ flow { emit(...) } تدفقاً غير متزامن.
  • تكون Flows باردة ولا تعمل إلا عند جمعها.
  • حوّلها باستخدام map/filter، وعالج الأخطاء باستخدام catch.
  • يحدد flowOn Dispatcher المنتج.

الأسئلة الشائعة

هل درس «أساسيات Kotlin Flow» مجاني؟

نعم — نص درس «أساسيات Kotlin Flow» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 4 دروس في المجموع.

ماذا ستتعلم في «أساسيات Kotlin Flow»؟

أصدر تدفقات البيانات واجمعها تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟

لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «أساسيات Kotlin Flow»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟

نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات Coroutine ونطاقاتها
  2. viewModelScope وDispatchers
  3. أساسيات Kotlin Flow
  4. StateFlow وSharedFlow
← العودة إلى Android Academy