Sobes.tech
Junior — Middle

Explique as diferenças entre snapshotFlow, derivedStateOf, remember e rememberSavable no contexto da gestão de estado no Jetpack Compose.

sobes.tech IA

Resposta da IA

No Jetpack Compose, a gestão do estado é realizada através de várias funções-chave, cada uma com o seu propósito:

  • remember — é usado para guardar um valor na memória da composição. O valor mantém-se entre recomposições, mas é perdido ao destruir o componente (por exemplo, ao rodar a tela). Exemplo:
val count = remember { mutableStateOf(0) }
  • rememberSaveable — extensão do remember que guarda o estado não só entre recomposições, mas também ao recriar a atividade (por exemplo, após rodar a tela). Para isso, usa o mecanismo de salvamento de estado (SavedInstanceState).

  • derivedStateOf — cria um estado calculado que depende de outros estados. Otimiza o desempenho ao recalcular o valor apenas quando as dependências mudam.

val isButtonEnabled = derivedStateOf { count.value > 0 }
  • snapshotFlow — converte o estado do Compose num Flow, permitindo observar mudanças de estado de forma reativa, por exemplo, para integração com corrotinas.
val flow = snapshotFlow { count.value }

Assim:

  • remember e rememberSaveable — para guardar o estado na composição;
  • derivedStateOf — para calcular estados dependentes;
  • snapshotFlow — para criar um Flow a partir do estado do Compose.