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:

  1. 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)

  1. Salve o arquivo como: Atividade_4_1_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_4_2_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_4_3_SeuNome
  2. 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:

  1. Criar data class PerfilUiState e 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)

  1. Salve o arquivo como: Atividade_4_4_SeuNome
  2. 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