📊 Capítulo 04: Estado no Compose & Hoisting
Especialização em Mobile Nativo Android
🗺️ O Padrão Unidirectional Data Flow (UDF) & State Hoisting
flowchart TD
PAI["Composable Pai (Dono do Estado)"]
--> |"Passa Estado (ex: valor = 'Texto')"| FILHO["Composable Filho Stateless (Input / Botão)"]
FILHO --> |"Emite Evento: onValorChange('Novo')"| PAI
PAI --> UPDATE["Atualiza MutableState -> Dispara Recomposição"]
style PAI fill:#ede7f6,stroke:#512da8,stroke-width:2px
style FILHO fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style UPDATE fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🎯 Slide 1: remember vs rememberSaveable
-
remember { mutableStateOf(0) }: Retém o valor durante recomposições normais da tela. rememberSaveable { mutableStateOf(0) }: Sobrevive à destruição e recriação da Activity (ex.: rotação de tela do celular ou encerramento pelo sistema para liberar RAM).
🎯 Slide 2: Praticando State Hoisting
// Composable Reutilizável e 100% Testável (Stateless)
@Composable
fun CampoTextoCustomizado(
valor: String,
onValorChange: (String) -> Unit
) {
OutlinedTextField(
value = valor,
onValueChange = onValorChange,
label = { Text("Nome") }
)
}
🎯 Slide 3: derivedStateOf para Otimização de Recomposição
- Use
remember { derivedStateOf { scrollState.firstVisibleItemIndex > 0 } }para evitar disparar recomposições a cada pixel rolado na tela, recalculando apenas quando o valor booleano realmente mudar!
🔗 Navegação do Capítulo 04
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim