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.