StateFlow
- Kotlin kursu
- İleri seviye
- Ders 7/83
- 5 dk
StateFlow ile durum akışı öğrenirsin.
StateFlow nedir?
StateFlow, her zaman bir değeri olan sıcak (hot) bir akıştır. Değer değiştikçe toplayıcılara son durumu iletir; toplayıcı sonradan katılsa da güncel değeri hemen alır.
Bir MutableStateFlow(initial) ile oluşturulur; .value ile okunur ve yazılır. Aynı değeri tekrar yazmak yayını tetiklemez (conflation). State, UI durum yönetiminde yaygın bir araçtır: ViewModel'de tutulan veri için uygun bir taşıyıcıdır.
StateFlow kullanımı
MutableStateFlow ile durumu oluşturup .value üzerinden güncellersin. Toplayıcı, .collect ile güncel değeri ve sonraki değişiklikleri alır.
Örnek: val state = MutableStateFlow(0); state.value = 1. Bir launch içinde state.collect { v -> println(v) } açtığında hem güncel değeri hem de sonraki değişiklikleri yazdırır. Aynı değeri tekrar yazmak yayın yapmaz; yalnızca farklı değerler toplayıcıya iletilir.
Uygulama StateFlow ile durum yaz ve oku
val state = MutableStateFlow(0) tanımla. println("Başlangıç: ${state.value}") ile ilk değeri yazdır. Sonra state.value = 5 yap ve println("Yeni: ${state.value}") ile yeni değeri yazdır.
Başlangıç kodu
// StateFlow kullan
// buraya yaz
fun main() {
}Örnek çözüm
fun main() {
val state = MutableStateFlow(0)
println("Başlangıç: ${state.value}")
state.value = 5
println("Yeni: ${state.value}")
}Beklenen çıktı
Başlangıç: 0 Yeni: 5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 StateFlow ile ilgili hangisi doğrudur?
- Sadece bir kez yayın yapar
- Değeri null olmalı
- Her zaman bir değeri vardır Doğru cevap
- Coroutine gerektirmez
Açıklama: StateFlow her zaman bir başlangıç değeri taşır.
2 StateFlow başlangıç değerini tamamla
val state = MutableStateFlow(____)
val state = MutableStateFlow(0)
Açıklama: StateFlow bir başlangıç değeri ister.
3 StateFlow parçalarını eşle
| Kavram | Anlamı |
|---|---|
MutableStateFlow |
Durum taşıyıcı |
.value |
Okuma ve yazma |
.collect |
Toplama |
conflation |
Aynı değeri yaymaz |