O componente de navegação no Android Jetpack oferece suporte a apps do Jetpack Compose. É possível navegar entre funções de composição e, ao mesmo tempo, aproveitar a infraestrutura e os recursos do componente de navegação.
Esta página descreve as diferenças existentes na navegação com o Jetpack Compose para Wear OS.
Configurar
Use a dependência a seguir no arquivo build.gradle do módulo do app:
Kotlin
dependencies { def wear_compose_version = "1.4.0" implementation "androidx.wear.compose:compose-navigation:$wear_compose_version" }
Essa dependência é usada em vez do artefato androidx.navigation:navigation-compose
,
porque ela fornece implementações alternativas específicas para o Wear OS.
Criar um controlador, um host e um gráfico de navegação
A navegação com o Compose para Wear OS requer os mesmos três componentes necessários em apps que não são criados para esse sistema operacional: controlador, host e gráfico de navegação.
Use
rememberSwipeDismissableNavController()
para criar uma instância de WearNavigator
, uma implementação do NavController
usada nos aplicativos para Wear OS:
Kotlin
val navController = rememberSwipeDismissableNavController()
NavController
é
a API principal usada para navegar em aplicativos do Compose. Ela controla a navegação
entre funções de composição no host de navegação, que no Wear OS é
SwipeDismissableNavHost
.
Kotlin
val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( navController = navController, startDestination = "message_list" ) { // TODO: build navigation graph }
Assim como a
função de composição NavHost
,
ela faz referência ao controlador de navegação, à rota para o destino
inicial e ao builder do gráfico de navegação, que é um lambda final
nesse exemplo.
O destino inicial precisa ser informado no builder do gráficos de navegação, junto a todos os outros destinos que precisam ser acessados pelo controlador de navegação.
No app para Wear OS, declare SwipeDismissableNavHost
como um conteúdo do Scaffold
para
oferecer suporte a componentes de alto nível, como tempo, indicador de rolagem/posição e indicador
de página.
Use um objeto Horologist AppScaffold
acima da SwipeDismissableNavHost
e o
Horologist ScreenScaffold
no nível da tela para adicionar um objeto TimeText
à tela por padrão e garantir que ele seja animado corretamente ao navegar
entre telas.
Além disso, o ScreenScaffold
adiciona um PositionIndicator
para conteúdo rolável.
AppScaffold { val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( navController = navController, startDestination = "message_list" ) { composable("message_list") { MessageList(onMessageClick = { id -> navController.navigate("message_detail/$id") }) } composable("message_detail/{id}") { MessageDetail(id = it.arguments?.getString("id")!!) } } } // ... // .. Screen level content goes here val scrollState = rememberScrollState() ScreenScaffold(scrollState = scrollState) { // Screen content goes here
Para saber mais sobre a navegação no Jetpack, consulte Como navegar com o Compose ou faça o codelab Navegação no Jetpack Compose.
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Migrar a Navegação do Jetpack para o Navigation Compose
- Navegação com o Compose
- Navegar entre telas com o Compose