Sobes.tech
Middle

Do czego służy StateFlow w rozwoju Androida?

sobes.tech AI

Odpowiedź od AI

StateFlow jest używany do reprezentowania strumienia danych, który zawsze ma wartość. Jest to "zimny" strumień i wysyła ostatnią wartość przy subskrypcji.

Główne zastosowania:

  • Reprezentacja stanu UI: StateFlow jest idealny do przechowywania stanu ViewModel i przekazywania go do Activity lub Fragment.
  • Udostępnianie danych: Wielu subskrybentów może słuchać tego samego StateFlow i otrzymywać aktualną wartość.
  • Zamiana LiveData: W projektach Kotlin często używa się StateFlow zamiast LiveData ze względu na lepszą integrację z korutynami i Kotlin Flow.
// Przykład użycia StateFlow w ViewModel
import androidx.lifecycle.ViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow

class MyViewModel : ViewModel() {

    private val _uiState = MutableStateFlow(MyUiState(isLoading = true, data = null))
    val uiState: StateFlow<MyUiState> = _uiState // Udostępnij jako niemutowalny StateFlow

    data class MyUiState(
        val isLoading: Boolean,
        val data: List<String>?
    )

    fun loadData() {
        // Symulacja ładowania danych
        _uiState.value = MyUiState(isLoading = false, data = listOf("Item 1", "Item 2"))
    }
}