Jetpack Compose Academy · Ders

hiltViewModel ve @HiltViewModel

ViewModels'leri Composable'lara enjekte edin.

3. ders / 413 adım

hiltViewModel ve @HiltViewModel, CoddyKit'te ücretsiz bir Jetpack Compose Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Jetpack Compose Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Jetpack Compose Academy kursu toplamda 4 dersten oluşur.

Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.

ViewModels Need Dependencies Too

Your ViewModel usually depends on a repository or use case. Hilt can inject those for you, so you never build them by hand again.

Annotate the ViewModel

Mark the class with @HiltViewModel and add @Inject to its constructor. Hilt now knows how to create it with all its dependencies.

@HiltViewModel
class FeedViewModel @Inject constructor(private val repo: Repo) : ViewModel()

Inject Anything It Needs

Constructor parameters can be any type Hilt knows, like a repository, a use case, or a logger. Hilt resolves the whole chain for you.

@HiltViewModel
class FeedViewModel @Inject constructor(
    repo: Repo, logger: Logger
) : ViewModel()

Get One in Compose

Inside a Composable, call hiltViewModel() to obtain a Hilt-built ViewModel. No factory boilerplate, just one clean call.

@Composable
fun FeedScreen(vm: FeedViewModel = hiltViewModel()) { }

Add the Compose Dependency

hiltViewModel() lives in the hilt-navigation-compose artifact. Add it to your Gradle file so the function is available in your screens.

implementation("androidx.hilt:hilt-navigation-compose:1.2.0")

Default Parameter Pattern

Putting hiltViewModel() as a default parameter keeps the Composable testable. A test can still pass a fake ViewModel directly.

@Composable
fun FeedScreen(vm: FeedViewModel = hiltViewModel())

Scoped to the Owner

hiltViewModel() scopes the instance to the nearest ViewModelStoreOwner, usually the Activity or nav destination, so it survives recomposition.

One ViewModel Per Destination

Inside a NavHost, each destination gets its own ViewModel instance. Navigate away and back, and that screen receives a fresh one.

Mark the Activity Too

The host Activity must carry @AndroidEntryPoint so Hilt can deliver ViewModels into its Composables. Without it, injection fails.

@AndroidEntryPoint
class MainActivity : ComponentActivity()

Expose State, Hide Logic

The injected ViewModel exposes UI state and the screen just reads it. Your Composable stays thin while logic lives in one tested place.

val state by vm.uiState.collectAsStateWithLifecycle()

No Manual Factories

Before Hilt you wrote a ViewModelProvider.Factory for each ViewModel with arguments. Hilt removes that boilerplate completely. 🎁

Quick Check

Which pair correctly sets up a Hilt-injected ViewModel for a Composable?

Recap: Injected ViewModels

You learned to tag a ViewModel with @HiltViewModel and fetch it via hiltViewModel(), scoped to its owner with zero factory code. ✨

Başlamak ücretsiz

Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
30
Dersler
120

Sıkça Sorulan Sorular

“hiltViewModel ve @HiltViewModel” dersi ücretsiz mi?

Evet — “hiltViewModel ve @HiltViewModel” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Jetpack Compose Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Jetpack Compose Academy kursu toplamda 4 dersten oluşur.

“hiltViewModel ve @HiltViewModel” dersinde ne öğreneceğim?

ViewModels'leri Composable'lara enjekte edin. Jetpack Compose Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Jetpack Compose Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Jetpack Compose Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“hiltViewModel ve @HiltViewModel” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Jetpack Compose Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Jetpack Compose Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. DI Neden Kullanılır: Test Edilebilir, Ayrıştırılmış Kod
  2. Modüller, @Provides ve @Binds
  3. hiltViewModel ve @HiltViewModel
  4. Kapsamlar ve Bileşen Ömürleri
← Jetpack Compose Academy Sayfasına Dön