Navegação no Compose com Navigation Compose e Type-Safe Routes
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 9.1 — Configuração de NavHost e NavController
Contexto: Configuração de NavHost e NavController no contexto de Navegação no Compose com Navigation Compose e Type-Safe Routes.
Requisitos de Execução:
- Instanciar
rememberNavController()e configurar rotas ‘home’ e ‘detalhes’ comNavHost.
Resultado Esperado
Navegação básica entre telas configurada no Jetpack Compose.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_9_1_SeuNome - Envie na tarefa:
Atividade Cap 9 - Navegação no Compose com Navigation Compose e Type-Safe Routes
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.navigation
import androidx.compose.runtime.Composable
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.compose.material3.Text
@Composable
fun AppNavigation() {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = "home") {
composable("home") { Text("Tela Principal") }
composable("detalhes") { Text("Tela de Detalhes") }
}
}
🔍 Nível 2: Prática
Problema 9.2 — Passagem de Argumentos em Rotas com NavType
Contexto: Passagem de Argumentos em Rotas com NavType no contexto de Navegação no Compose com Navigation Compose e Type-Safe Routes.
Requisitos de Execução:
- Passar ID de produto pela URL de navegação
detalhes/{produtoId}e recuperar no destino.
Resultado Esperado
Passagem e extração de argumentos tipados na pilha de navegação.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_9_2_SeuNome - Envie na tarefa:
Atividade Cap 9 - Navegação no Compose com Navigation Compose e Type-Safe Routes
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.navigation
import androidx.navigation.NavType
import androidx.navigation.compose.composable
import androidx.navigation.navArgument
import androidx.navigation.NavGraphBuilder
import androidx.compose.material3.Text
fun NavGraphBuilder.adicionarRotaDetalhes() {
composable(
route = "detalhes/{id}",
arguments = listOf(navArgument("id") { type = NavType.IntType })
) { backStackEntry ->
val produtoId = backStackEntry.arguments?.getInt("id") ?: 0
Text("Exibindo produto com ID: $produtoId")
}
}
⚡ Nível 3: Integração
Problema 9.3 — Type-Safe Navigation com Kotlinx Serialization e Kotlin 2.0
Contexto: Type-Safe Navigation com Kotlinx Serialization e Kotlin 2.0 no contexto de Navegação no Compose com Navigation Compose e Type-Safe Routes.
Requisitos de Execução:
- Definir rotas com
@Serializable data object Homee@Serializable data class Perfil(val userId: String).
Resultado Esperado
Navegação moderna 100% type-safe sem strings mágicas.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_9_3_SeuNome - Envie na tarefa:
Atividade Cap 9 - Navegação no Compose com Navigation Compose e Type-Safe Routes
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.navigation
import kotlinx.serialization.Serializable
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.toRoute
import androidx.navigation.NavHostController
import androidx.compose.material3.Text
@Serializable data object RotaHome
@Serializable data class RotaPerfil(val userId: String)
fun configurarRotasTypeSafe(navController: NavHostController) {
// NavHost com rotas de objetos serializaveis
println("Rotas Type-Safe registradas com sucesso.")
}
🏆 Nível 4: Desafio Corporativo
Problema 9.4 — Navegação com Bottom Navigation Bar e Scaffold Integrado
Contexto: Navegação com Bottom Navigation Bar e Scaffold Integrado no contexto de Navegação no Compose com Navigation Compose e Type-Safe Routes.
Requisitos de Execução:
- Criar layout com barra inferior de navegação sincronizada com a rota atual e suporte a pilha de abas.
Resultado Esperado
Estrutura de navegação profissional com BottomBar e Scaffold.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_9_4_SeuNome - Envie na tarefa:
Atividade Cap 9 - Navegação no Compose com Navigation Compose e Type-Safe Routes
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.navigation
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.navigation.compose.rememberNavController
@Composable
fun AppScaffoldComNavegacao() {
val navController = rememberNavController()
Scaffold(
bottomBar = {
NavigationBar {
NavigationBarItem(
selected = true,
onClick = { navController.navigate("home") },
icon = { Text("🏠") },
label = { Text("Inicio") }
)
}
}
) { padding ->
Text("Conteudo principal", modifier = Modifier.padding(padding))
}
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |