Sobes.tech
Middle

¿Para qué se utiliza StateFlow en el desarrollo de Android?

sobes.tech AI

Respuesta de la IA

StateFlow se utiliza para representar un flujo de datos que siempre tiene un valor. Es un flujo "frío" y envía el último valor al suscribirse.

Aplicaciones principales:

  • Representación del estado de la UI: StateFlow es ideal para almacenar el estado del ViewModel y pasarlo a Activity o Fragment.
  • Compartir datos: Varios suscriptores pueden escuchar un mismo StateFlow y recibir el valor actual.
  • Sustituto de LiveData: En proyectos Kotlin, StateFlow a menudo se usa en lugar de LiveData debido a su mejor integración con corutinas y Kotlin Flow.
// Ejemplo de uso de StateFlow en 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 // Exponer como StateFlow inmutable

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

    fun loadData() {
        // Simular carga de datos
        _uiState.value = MyUiState(isLoading = false, data = listOf("Item 1", "Item 2"))
    }
}