CodeBlanks Logo Icon CodeBlanks

StateFlow

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

Main.kt
// StateFlow kullan
// buraya yaz
fun main() {
    
}

Örnek çözüm

Main.kt
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

Soru
val state = MutableStateFlow(____)
Cevap
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

İleri seviye bölümündeki tüm dersler