Gerenciamento de Estado no Compose: remember, mutableStateOf e Hoisting
Instruções Gerais:
- Resolva as atividades em ordem progressiva de maturidade.
- Cada nível adiciona requisitos técnicos, tratamento de erros e casos de borda reais.
- Consulte o gabarito comentado ao final de cada questão para autoavaliação.
🎯 Nível 1: Fundamentos
Problema 4.1 — Estado Reativo com remember e mutableStateOf
Contexto: Estado Reativo com remember e mutableStateOf no contexto de Gerenciamento de Estado no Compose: remember, mutableStateOf e Hoisting.
Requisitos de Execução:
- Criar contador interativo incrementado ao clicar no botão utilizando
remember { mutableStateOf(0) }.
Resultado Esperado
Contador com recomposição reativa automática.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_4_1_SeuNome - Envie na tarefa:
Atividade Cap 4 - Gerenciamento de Estado no Compose: remember, mutableStateOf e Hoisting
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.ui
import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.*
@Composable
fun ContadorSimples() {
var contador by remember { mutableStateOf(0) }
Column {
Text(text = "Total de cliques: $contador")
Button(onClick = { contador++ }) {
Text("Incrementar")
}
}
}
🔍 Nível 2: Prática
Problema 4.2 — Padrão State Hoisting para Componentes Stateless Reutilizáveis
Contexto: Padrão State Hoisting para Componentes Stateless Reutilizáveis no contexto de Gerenciamento de Estado no Compose: remember, mutableStateOf e Hoisting.
Requisitos de Execução:
- Separar o estado da UI criando componente sem estado que recebe o valor e a callback de evento.
Resultado Esperado
Componente desacoplado seguindo as boas práticas de State Hoisting.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_4_2_SeuNome - Envie na tarefa:
Atividade Cap 4 - Gerenciamento de Estado no Compose: remember, mutableStateOf e Hoisting
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.ui
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@Composable
fun CampoTextoCustomizado(
valor: String,
onValorChange: (String) -> Unit,
label: String
) {
OutlinedTextField(
value = valor,
onValueChange = onValorChange,
label = { Text(label) },
singleLine = true
)
}
⚡ Nível 3: Integração
Problema 4.3 — Preservação de Estado com rememberSaveable em Mudanças de Configuração
Contexto: Preservação de Estado com rememberSaveable em Mudanças de Configuração no contexto de Gerenciamento de Estado no Compose: remember, mutableStateOf e Hoisting.
Requisitos de Execução:
- Salvar estado de formulário contra rotações de tela utilizando
rememberSaveable.
Resultado Esperado
Estado preservado intacto após recriação de Activity por rotação de tela.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_4_3_SeuNome - Envie na tarefa:
Atividade Cap 4 - Gerenciamento de Estado no Compose: remember, mutableStateOf e Hoisting
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.ui
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
@Composable
fun FormularioPersistente() {
var email by rememberSaveable { mutableStateOf("") }
CampoTextoCustomizado(
valor = email,
onValorChange = { email = it },
label = "E-mail Corporativo"
)
}
🏆 Nível 4: Desafio Corporativo
Problema 4.4 — Modelagem de UI State Holder com Fluxo Unidirecional (UDF)
Contexto: Modelagem de UI State Holder com Fluxo Unidirecional (UDF) no contexto de Gerenciamento de Estado no Compose: remember, mutableStateOf e Hoisting.
Requisitos de Execução:
- Criar data class
PerfilUiStatee controlar atualizações atômicas e imutáveis de estado.
Resultado Esperado
Padrão UDF (Unidirectional Data Flow) implementado para UI corporativa.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_4_4_SeuNome - Envie na tarefa:
Atividade Cap 4 - Gerenciamento de Estado no Compose: remember, mutableStateOf e Hoisting
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.ui
data class PerfilUiState(
val nome: String = "",
val notificacoesAtivas: Boolean = true,
val isLoading: Boolean = false
)
class PerfilStateHolder {
var state by androidx.compose.runtime.mutableStateOf(PerfilUiState())
private set
fun atualizarNome(novoNome: String) {
state = state.copy(nome = novoNome)
}
fun alternarNotificacoes(ativo: Boolean) {
state = state.copy(notificacoesAtivas = ativo)
}
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |