Sobes.tech
Middle

Para que é que o StateFlow é utilizado no desenvolvimento Android?

sobes.tech IA

Resposta da IA

O StateFlow é utilizado para representar um fluxo de dados que sempre tem um valor. É um fluxo "frio" e envia o último valor ao subscrever.

Principais aplicações:

  • Representação do estado da UI: O StateFlow é ideal para armazenar o estado do ViewModel e passá-lo para uma Activity ou Fragment.
  • Partilha de dados: Vários assinantes podem ouvir um mesmo StateFlow e receber o valor atual.
  • Substituição do LiveData: Em projetos Kotlin, o StateFlow é frequentemente usado em vez do LiveData devido à sua melhor integração com corrotinas e Kotlin Flow.
// Exemplo de uso do StateFlow no 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 // Expor como StateFlow imutável

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

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