ViewModel'den Durum Sunma
Compose kullanıcı arayüzünü bir ViewModel ile yönetin.
ViewModel'den Durum Sunma, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 4 dersinin 2. 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, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 4 dersten oluşur.
Kullanıcı Arayüzüne Durum Açma
Bir ViewModel durumu tutar; ancak kullanıcı arayüzünün bu durumu gözlemleyerek değiştiğinde yeniden oluşturabilmesi için bir yola ihtiyacı vardır.
Modern Android'de bunu yapmak için iki yaygın araç vardır: StateFlow ve Compose State.
Değiştirilebilir ve Değiştirilemez Örüntü
En iyi uygulama, özel ve değiştirilebilir bir destek özelliğini koruyup genel, salt okunur bir sürümünü dışarı açmaktır.
Bu, kullanıcı arayüzünün durumu yanlışlıkla doğrudan değiştirmesini önler.
StateFlow ile Durum Açma
İçeride bir MutableStateFlow kullanın ve bunu salt okunur bir StateFlow olarak dışarı açın.
class CounterViewModel : ViewModel() {
private val _count = MutableStateFlow(0)
val count: StateFlow<Int> = _count.asStateFlow()
fun increment() {
_count.value++
}
}Compose'ta StateFlow Toplama
Composable, akışı collectAsState() ile Compose durumuna dönüştürür (veya ileride ele alınacak yaşam döngüsünü dikkate alan çeşidiyle).
@Composable
fun CounterScreen(vm: CounterViewModel) {
val count by vm.count.collectAsState()
Text("Count: " + count)
}StateFlow Neden Başlangıç Değerine İhtiyaç Duyar?
Bir StateFlow her zaman bir geçerli değere sahiptir. Bu nedenle onu oluştururken bir başlangıç değeri vermeniz gerekir.
Her yeni toplayıcı en güncel değeri hemen alır; hiçbir zaman boş bir akış almaz.
Alternatif: Compose mutableStateOf
ViewModel içindeki basit, ekrana yerel durumlar için Compose'un otomatik olarak gözlemlediği mutableStateOf özelliğini de kullanabilirsiniz.
class CounterViewModel : ViewModel() {
var count by mutableStateOf(0)
private set
fun increment() { count++ }
}StateFlow ve Compose State Karşılaştırması
- StateFlow, Kotlin eş yordamlarının bir parçasıdır ve yalnızca Compose'ta değil, her yerde çalışır. Paylaşılan ve yaşam döngüsünü dikkate alan akışlar için idealdir.
- mutableStateOf, Compose'a özgüdür ve oldukça kısadır.
Daha büyük uygulamalardaki ViewModel'ler için genellikle StateFlow tercih edilir.
Ekran Durumunu Tek Nesne Olarak Modelleme
Birçok ayrı akış kullanmak yerine ilişkili alanları tek bir kullanıcı arayüzü durumu veri sınıfında gruplayın. Bu, güncellemeleri atomik ve öngörülebilir tutar.
data class ProfileUiState(
val name: String = "",
val isLoading: Boolean = false,
val error: String? = null
)Kullanıcı Arayüzü Durumu Nesnesini Dışarı Açma
Bu durum sınıfına ait tek bir StateFlow açın. Kullanıcı arayüzü her şeyi tek bir doğru kaynaktan okur.
private val _uiState = MutableStateFlow(ProfileUiState())
val uiState: StateFlow<ProfileUiState> =
_uiState.asStateFlow()Değiştirilemez Durumu Güncelleme
Durumu, eski nesneyi hiçbir zaman değiştirmeden, değişen alanlara sahip bir copy oluşturarak güncelleyin.
fun load() {
_uiState.update { it.copy(isLoading = true) }
// ... fetch, then:
_uiState.update {
it.copy(isLoading = false, name = "Ada")
}
}Olaylar Yukarı, Durum Aşağı Akar
Bu, tek yönlü veri akışının temelidir:
- Durum, ViewModel'den kullanıcı arayüzüne aşağı akar.
- Olaylar, işlev çağrıları aracılığıyla kullanıcı arayüzünden ViewModel'e yukarı akar.
Hızlı Kontrol
Durumu dışa aktarma konusundaki anlayışınızı test edin.
Özet
Şunları öğrendiniz:
- Özel bir
MutableStateFlowtutup salt okunur birStateFlowdışa aktarın. - İlişkili alanları bir UI durum veri sınıfında gruplayın.
update {}aracılığıylacopy()kullanarak güncelleyin.- Durum aşağı, olaylar yukarı akar.
Sıkça Sorulan Sorular
“ViewModel'den Durum Sunma” dersi ücretsiz mi?
Evet — “ViewModel'den Durum Sunma” 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 Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 4 dersten oluşur.
“ViewModel'den Durum Sunma” dersinde ne öğreneceğim?
Compose kullanıcı arayüzünü bir ViewModel ile yönetin. Android 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.
Android Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Android 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 2. dersidir.
“ViewModel'den Durum Sunma” 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 Android Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Android 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
- Neden ViewModel Kullanılır
- ViewModel'den Durum Sunma
- Android Yaşam Döngüsü
- collectAsStateWithLifecycle