0Pricing
Android Academy · Leçon

Injecter dans les ViewModels

Utilisez @HiltViewModel pour une injection claire.

Injecter dans les ViewModels est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 4 leçons au total.

Injecter des ViewModels avec Hilt

Les ViewModels sont particuliers : le framework les instancie par l’intermédiaire d’une fabrique. Hilt s’intègre à ce mécanisme grâce à l’annotation @HiltViewModel.

Annoter le ViewModel

Marquez le ViewModel avec @HiltViewModel et annotez son constructeur avec @Inject.

import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class UserViewModel @Inject constructor(
    private val repo: UserRepository
) : ViewModel()

Ce que Hilt fournit

Hilt recherche chaque paramètre du constructeur dans le graphe de dépendances. Tant que UserRepository est associé (par un module ou par injection du constructeur), Hilt le fournit automatiquement.

Le récupérer dans Compose

Utilisez hiltViewModel() dans un composable pour obtenir un ViewModel fourni par Hilt.

import androidx.hilt.navigation.compose.hiltViewModel

@Composable
fun UserScreen(
    vm: UserViewModel = hiltViewModel()
) {
    val state by vm.uiState
        .collectAsStateWithLifecycle()
}

L’hôte doit être un point d’entrée

Pour que hiltViewModel() fonctionne, l’Activity hôte doit être annotée avec @AndroidEntryPoint. Cela relie Compose au graphe Hilt.

@AndroidEntryPoint
class MainActivity : ComponentActivity()

Injecter d’autres dépendances

Vous pouvez injecter n’importe quel élément présent dans le graphe : des dépôts, des cas d’utilisation, voire la base de données Room fournie par un module.

@HiltViewModel
class HomeViewModel @Inject constructor(
    private val getUsers: GetUsersUseCase,
    private val analytics: Analytics
) : ViewModel()

Injecter le contexte de l’application

Vous avez besoin d’un contexte ? Injectez le contexte qualifié de l’application avec @ApplicationContext.

@HiltViewModel
class PrefsViewModel @Inject constructor(
    @ApplicationContext private val context: Context
) : ViewModel()

SavedStateHandle

Hilt fournit automatiquement SavedStateHandle, qui transporte les arguments de navigation et survit à la mort du processus.

@HiltViewModel
class DetailViewModel @Inject constructor(
    handle: SavedStateHandle
) : ViewModel() {
    val id: Int = handle.get<Int>("id") ?: 0
}

Le câblage complet

De bout en bout : le module fournit le dépôt → Hilt l’injecte dans le ViewModel → Compose obtient le ViewModel via hiltViewModel(). Aucune fabrique manuelle n’est nécessaire.

Aucun code de fabrique manuel

Sans Hilt, vous devriez écrire une fabrique personnalisée ViewModelProvider.Factory pour chaque ViewModel nécessitant des arguments de constructeur. @HiltViewModel élimine tout ce code.

Assembler tout le parcours

Vous disposez maintenant de toute la pile moderne : ViewModel et état adapté au cycle de vie, persistance Room, coroutines et Flow, le tout relié avec Hilt DI.

Vérification rapide

Vérifiez votre compréhension de l’injection des ViewModels.

Récapitulatif

Vous avez appris que :

  • Un constructeur @HiltViewModel + @Inject permet à Hilt de construire les ViewModels.
  • Dans Compose, récupérez-les avec hiltViewModel() au sein d’un hôte @AndroidEntryPoint.
  • Injectez les dépôts, @ApplicationContext et SavedStateHandle.
  • Aucune fabrique manuelle n’est nécessaire.

Questions Fréquemment Posées

La leçon « Injecter dans les ViewModels » est-elle gratuite ?

Oui — le texte complet de « Injecter dans les ViewModels » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Injecter dans les ViewModels » ?

Utilisez @HiltViewModel pour une injection claire. Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Android Academy ?

Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Injecter dans les ViewModels » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?

Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Pourquoi l'injection de dépendances ?
  2. Configurer Hilt
  3. Modules et fournisseurs
  4. Injecter dans les ViewModels
← Retour à Android Academy