0Pricing
Android Academy · درس

مراقبة البيانات باستخدام Flow

تفاعل مع تغييرات قاعدة البيانات بطريقة تفاعلية

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

قراءة قاعدة البيانات التفاعلية

بدلاً من تنفيذ الاستعلام مرة واحدة، يمكن لـ Room إرجاع Flow يُصدر قيمة جديدة في كل مرة تتغير فيها البيانات الأساسية. وبذلك تتحدث واجهة المستخدم تلقائياً.

إرجاع Flow من DAO

صرّح عن نوع الإرجاع باعتباره Flow<...>. لاحظ أنه ليس دالة suspend.

@Query("SELECT * FROM users ORDER BY name")
fun observeUsers(): Flow<List<User>>

لماذا لا نستخدم suspend هنا

تعيد دالة suspend نتيجة واحدة وتنتهي. أما Flow فهو تدفق مستمر، لذا يكون دالة عادية تعيد كائن التدفق؛ ثم تجمعه على مدار الوقت.

كيف يعرف Room متى يعيد الإصدار

يتتبع Room الجداول التي يلمسها الاستعلام. وعندما تؤثر أي عملية كتابة في تلك الجداول، يعيد Room تشغيل الاستعلام ويُصدر النتيجة المحدّثة عبر Flow. يحدث ذلك تلقائياً.

جمع التدفق في Coroutine

تجمع التدفق داخل coroutine، وعادةً ما يكون ذلك في ViewModel.

viewModelScope.launch {
    dao.observeUsers().collect { users ->
        _uiState.value = UiState(users)
    }
}

تعيين قيم التدفق

يمكنك تحويل التدفق باستخدام معاملات مثل map قبل إتاحته.

val names: Flow<List<String>> =
    dao.observeUsers().map { list ->
        list.map { it.name }
    }

تحويله إلى StateFlow

حوّل تدفق DAO البارد إلى StateFlow ساخن لواجهة المستخدم باستخدام stateIn.

val uiState = dao.observeUsers()
    .map { UiState(it) }
    .stateIn(
        viewModelScope,
        SharingStarted.WhileSubscribed(5000),
        UiState()
    )

الجمع في Compose

تجمع الشاشة هذه الحالة مع مراعاة دورة الحياة، تماماً كما تعلمت سابقاً.

@Composable
fun UsersScreen(vm: UserViewModel) {
    val state by vm.uiState
        .collectAsStateWithLifecycle()
    UserList(state.users)
}

السلسلة التفاعلية الكاملة

عند جمع الأجزاء معاً:

  • يُصدر Room قيمة عند تغير البيانات.
  • يحوّل ViewModel البيانات إلى حالة واجهة المستخدم عبر stateIn.
  • يجمع Compose الحالة باستخدام collectAsStateWithLifecycle.

اكتب في قاعدة البيانات من أي مكان، وستحدّث الشاشة نفسها.

المصدر الوحيد للحقيقة

يجعل هذا النمط قاعدة البيانات المصدر الوحيد للحقيقة. ولا تحتفظ واجهة المستخدم بنسخ قديمة من البيانات؛ بل تعكس دائماً ما هو مخزّن فعلياً.

عمليات الكتابة تؤدي إلى التحديثات

تؤدي أي عملية إدراج أو تحديث أو حذف في جدول تتم مراقبته إلى إعادة إصدار التدفق، لذلك لا تحتاج إلى تحديث القائمة يدوياً بعد حدوث تغيير.

suspend fun addUser(u: User) = dao.insert(u)
// observeUsers() flow re-emits automatically

تحقق سريع

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

مراجعة

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

  • تعيد أساليب DAO التي تُرجع Flow الإصدار عند تغير البيانات.
  • هي دوال عادية (غير معلّقة) تُرجع تدفقاً.
  • استخدم stateIn مع collectAsStateWithLifecycle لتشغيل واجهة المستخدم تفاعلياً.
  • تصبح قاعدة البيانات المصدر الوحيد للحقيقة.

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

هل درس «مراقبة البيانات باستخدام Flow» مجاني؟

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

ماذا ستتعلم في «مراقبة البيانات باستخدام Flow»؟

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

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

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

كم من الوقت يستغرق درس «مراقبة البيانات باستخدام Flow»؟

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

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

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

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

  1. الكيانات وDAOs
  2. فئة قاعدة بيانات Room
  3. الاستعلامات والعلاقات
  4. مراقبة البيانات باستخدام Flow
← العودة إلى Android Academy