الحقن في ViewModels
استخدم @HiltViewModel لحقن نظيف
الحقن في ViewModels درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 4 دروس في المجموع.
حقن ViewModels باستخدام Hilt
تُعد ViewModels خاصة؛ إذ ينشئها الإطار عبر مصنع. ويتكامل Hilt مع ذلك من خلال التعليق التوضيحي @HiltViewModel.
وضع التعليق التوضيحي على ViewModel
ضع التعليق التوضيحي @HiltViewModel على ViewModel، وضع التعليق التوضيحي @Inject على مُنشئها.
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@HiltViewModel
class UserViewModel @Inject constructor(
private val repo: UserRepository
) : ViewModel()ما الذي يوفره Hilt؟
يبحث Hilt عن كل معامل في المُنشئ داخل رسم الاعتماديات البياني. وما دام UserRepository مرتبطًا (عبر وحدة أو الحقن في المُنشئ)، فسيوفره Hilt تلقائيًا.
استرداده في Compose
استخدم hiltViewModel() داخل Composable للحصول على ViewModel يوفره Hilt.
import androidx.hilt.navigation.compose.hiltViewModel
@Composable
fun UserScreen(
vm: UserViewModel = hiltViewModel()
) {
val state by vm.uiState
.collectAsStateWithLifecycle()
}يجب أن تكون المضيفة نقطة دخول
لكي يعمل hiltViewModel()، يجب أن تحمل Activity المضيفة التعليق التوضيحي @AndroidEntryPoint. وهذا يربط Compose برسم Hilt البياني.
@AndroidEntryPoint
class MainActivity : ComponentActivity()حقن الاعتماديات الأخرى
يمكنك حقن أي شيء موجود في الرسم البياني: المستودعات وحالات الاستخدام وحتى قاعدة بيانات Room التي توفرها وحدة.
@HiltViewModel
class HomeViewModel @Inject constructor(
private val getUsers: GetUsersUseCase,
private val analytics: Analytics
) : ViewModel()حقن سياق التطبيق
هل تحتاج إلى سياق؟ احقن سياق التطبيق المؤهل باستخدام @ApplicationContext.
@HiltViewModel
class PrefsViewModel @Inject constructor(
@ApplicationContext private val context: Context
) : ViewModel()SavedStateHandle
يوفر Hilt تلقائيًا SavedStateHandle، الذي يحمل وسيطات التنقل ويستمر بعد انتهاء العملية.
@HiltViewModel
class DetailViewModel @Inject constructor(
handle: SavedStateHandle
) : ViewModel() {
val id: Int = handle.get<Int>("id") ?: 0
}الربط الكامل
من البداية إلى النهاية: توفر الوحدة المستودع → يحقنه Hilt في ViewModel → يحصل Compose على ViewModel عبر hiltViewModel(). لا توجد مصانع يدوية في أي مكان.
لا حاجة إلى شيفرة مصنع يدوية
من دون Hilt، كنت ستكتب ViewModelProvider.Factory مخصصًا لكل ViewModel يحتاج إلى معاملات في المُنشئ. ويلغي @HiltViewModel كل ذلك.
جمع أجزاء المسار
لديك الآن الحزمة الحديثة الكاملة: ViewModel مع حالة تراعي دورة الحياة، واستمرارية Room، وcoroutines وFlow، وكلها مربوطة باستخدام Hilt DI.
تحقق سريع
اختبر مدى فهمك لحقن ViewModels.
مراجعة
لقد تعلمت:
- يتيح مُنشئ
@HiltViewModelمع@Injectلـ Hilt إنشاء ViewModels. - احصل عليها في Compose باستخدام
hiltViewModel()داخل مضيفة تحمل@AndroidEntryPoint. - احقن المستودعات و
@ApplicationContextوSavedStateHandle. - لا حاجة إلى مصانع يدوية.
تعلم Kotlin مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 36
- الدروس
- 152
الأسئلة الشائعة
هل درس «الحقن في ViewModels» مجاني؟
نعم — نص درس «الحقن في ViewModels» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 4 دروس في المجموع.
ماذا ستتعلم في «الحقن في ViewModels»؟
استخدم @HiltViewModel لحقن نظيف تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟
لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «الحقن في ViewModels»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟
نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- لماذا حقن التبعيات؟
- إعداد Hilt
- الوحدات وموفّرو التبعيات
- الحقن في ViewModels