navigation3
| Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
|---|---|---|---|---|
| 22 de outubro de 2025 | - | - | 1.0.0-beta01 | - |
Declarar dependências
Para adicionar uma dependência ao navigation3, adicione o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.
Adicione as dependências dos artefatos necessários ao arquivo build.gradle do
seu app ou módulo:
Groovy
dependencies { implementation "androidx.navigation3:navigation3-runtime:1.0.0-beta01" implementation "androidx.navigation3:navigation3-ui:1.0.0-beta01" }
Kotlin
dependencies { implementation("androidx.navigation3:navigation3-runtime:1.0.0-beta01") implementation("androidx.navigation3:navigation3-ui:1.0.0-beta01") }
Para mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Não há notas de versão para este artefato.
Versão 1.0
Versão 1.0.0-beta01
22 de outubro de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-beta01. A versão 1.0.0-beta01 contém estes commits.
Mudanças na API
- Agora,
SceneStrategyScopetem apenas um construtor público sem argumentos, adequado para testar seuSceneStrategye oSceneretornado isoladamente. Para casos de uso mais complexos, userememberSceneState(). (I8440c, b/451679047)
Correções de bugs
- Correção de um loop infinito ao encadear
SceneStrategycomthen. (Iba3f0, b/450323470) - Corrigimos o tremeluzir da tela ao trocar o
backStacktransmitido paraNavDisplaye usar animações. (Ief7b5, b/450967248)
Versão 1.0.0-alpha11
8 de outubro de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha11. A versão 1.0.0-alpha11 contém estes commits.
Mudanças na API
- O método
calculateSceneemSceneStrategynão é mais@Composable. Em vez disso, considere mover esse trabalho para a construção do seu métodoSceneStrategy(ou seja, em um métodorememberMySceneStrategy()) que permite definir totalmente o ciclo de vida de qualquer valorrememberSaveableou instruçõesrememberprincipais com base nos valores corretos. (If1733, b/448709506). - O parâmetro
onBackparaSceneStrategy.calculateScenefoi movido para o novo escopo do receptor deSceneStrategyScopepara deixar mais claro que esse é um parâmetro opcional e fornecer um ponto de extensão para futuros recursos do Navigation3. (I3aea3, b/448460407) - A lambda
onBacktransmitida paraNavDisplaye para seuSceneStrategynão fornece mais um parâmetrocount: Intpara indicar quando várias entradas precisam ser removidas. Em vez disso, a lambda() -> Unitserá chamada várias vezes seguidas no raro caso em que sua cena solicitar a exibição de várias entradas. (Idedb5, b/446989346) - Remova a classe
NavEntryWrappere substitua a funcionalidade dela por uma classeNavEntryfinal com um novo construtor secundário que usa umNavEntrycom conteúdo novo. Isso vai permitir o suporte contínuo para encapsular uma entrada com conteúdo novo. (I7da2a, b/444447130). - A função
navEntryDecorator, que cria e retorna umNavEntryDecorator, foi removida e substituída pela classeNavEntryDecorator, que agora é pública e aberta para criação de subclasses. (If81f8, b/444447434, b/447381176) SavedStateNavEntryDecoratorfoi renomeado comoSaveableStateHolderNavEntryDecoratorporque decora entradas com umSaveableStateHolder. O decorador também foi refatorado de uma função para uma classe, já que é funcionalmente uma fábrica paraNavEntryDecorator. (Ie6013, b/447381176).- As telas personalizadas que usam
SceneStatecomo alternativa aoNavDisplaynão precisam mais usar o local de composiçãoLocalEntriesToRenderInCurrentScene, que agora é interno. (Ic40ef, b/414668196) SceneSetupNavEntryDecoratorerememberSceneSetupNavEntryDecorator()foram removidos da plataforma da API pública. Essa funcionalidade agora é incluída por padrão sem que você precise fazer isso manualmente. (Ieae42, b/444479133)NavEntry,DialogScene,SinglePaneSceneeSceneStateagora implementam "equals". (I96121)- A interface de cena tem um novo campo de metadados para anexar metadados específicos da cena ao NavDisplay. Isso permite que uma cena substitua os metadados no
NavDisplay, por exemplo, com transições. (I1fd96, b/443955625) - Simplifique a assinatura
rememberNavBackStackremovendo o parâmetro de tipo genérico redundante. A função agora aceitavararg elements: NavKey. (I03e45) - As animações padrão para
NavDisplayagora fazem parte da API comum, o que permite que elas sejam chamadas de todas as plataformas. (I71af9, b/447147159). - Renomeie
EntryProviderBuilderparaEntryProviderScopepara refletir com precisão que a classe é uma DSL do Kotlin que fornece um escopo para criarNavEntries. (Ia7465)
Correções de bugs
rememberNavBackStack()agora aplica a serialização polimórfica para NavKey e exige umSavedStateConfigurationpersonalizado configurado para garantir a restauração correta do estado. O KDoc foi atualizado para refletir a exigência de que todos os subtipos NavKey sejam registrados no SerializersModule fornecido. (I6de37,I782f2, b/446664383)
Versão 1.0.0-alpha10
24 de setembro de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estes commits.
Mudanças na API
- Adicione uma nova sobrecarga de
NavDisplayque usa uma lista deNavEntry<T>decorada porrememberDecoratedNavEntries. (I4025b, b/441940314) DialogScenefoi movido para um novo pacote. (Ia5840).- Remoção da API pública
DecorateNavEntry. Em vez disso, userememberDecoratedNavEntriespara incluir um NavEntry com uma lista de decoradores. (Id8c09). - A interface do Navigation3 agora oferece novas propriedades
transitionSpecpadrão. (Ibcabd). - Adicionamos um novo objeto
SceneStatepara ajudar a gerenciar cenas. Isso também fornece uma nova sobrecarga deNavDisplayque usa oSceneStatee oNavigationEventState. (Idfb46, b/444479133). - O
NavDisplayagora permite personalizar as transições com base no queScenevocê vai e vem, analisando ocurrentStatee otargetStatedoTransition. (I906cc, b/443872322). NavigationEventInfoagora é umabstract classem vez de uminterface. Atualize todas as implementações personalizadas para herdar da classe (por exemplo,data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)- As APIs de manipulador
navigationevent-composeforam atualizadas.NavigationEventHandlereNavigationBackHandler(e variantes) agora são compatíveis com uma nova sobrecarga que aceitaNavigationEventStates içados. As sobrecargas simples (que usamcurrentInfo) são preservadas e agora usam esse novo modelo de estado internamente. (Ic3251, b/444734264) - Todas as APIs de cena foram movidas de navigation3-ui para navigation3-runtime. Isso significa que eles agora estão disponíveis em todas as plataformas compatíveis com navigation3-runtime. (I431d0, b/444449993)
- Adicionada uma nova sobrecarga de
rememberDecoratedNavEntriesque usa uma lista deNavEntrypara decorar. As entradas podem já estar decoradas com outros decoradores. (I5a034, b/444230270) - Remover parâmetros de tipo curinga navigation3 (I02540)
- Melhoria no processamento de genéricos para a DSL
entryProvider. Se você importavaandroidx.navigation3.runtime.entryantes, isso não é mais necessário. (I299fc). - Restrinja a sobrecarga
NavBackStackSerializerbaseada em reflexão ao Android. Isso evita falhas implícitas de serialização de tempo de execução em plataformas que não são Android, exigindo o uso da sobrecargaSavedStateConfigurationexplícita em código multiplataforma. (I73313, b/420443609). - Transformar o
swipeEdgedoNavigationEventem um@IntDef(Icee54, b/443950342) - Restringe a serialização de
NavBackStackao Android. Isso evita falhas de tempo de execução em plataformas que não são Android. Para salvar o estado em várias plataformas, use a sobrecargarememberNavBackStackcom umSavedStateConfigurationexplícito. (I1e418, b/420443609)
Correções de bugs
- Correção de uma falha durante a volta preditiva quando um
NavDisplayaninhado tem uma única entrada secundária. (I2cdc0, b/441933162).
Versão 1.0.0-alpha09
10 de setembro de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estes commits.
Mudanças na API
- O
DecoratedNavEntryProviderfoi substituído porrememberDecoratedNavEntries, que cria e retorna NavEntries decoradas com a lista de decoradores fornecidos (I0fe1c, b/441328236). NavBackStackagora é genérico no tipoNavKey. Isso permite que apps e bibliotecas definam tipos de chaves personalizados para as pilhas de retorno, em vez de ficarem restritos aNavKey. (I4d190,Iad2f4, b/420443609)- O
NavBackStackagora é@kotlinx.serialization.Serializable, o que permite salvar e restaurar o estado de navegação durante o encerramento do processo e mudanças de configuração sem código extra. (I2c3cf, b/420443609). RememberNavBackStackfoi movido paracommonMainpara garantir que seja fornecido em todos os destinos de plataforma. (Id69e7, b/420443609)
Correções de bugs
- O
NavDisplayagora move corretamente cadaNavEntryindividual para oLifecycle.Statecorreto. (I30aac, b/440145700) - Foi corrigido um problema em que
NavDisplayignorava qualquerNavigationEventDispatcherOwneraninhado definido usando oLocalNavigationEventDispatcherOwnerda bibliotecaNavigationEvent. (I6224a).
Mudanças na dependência
- O Navigation3 agora depende do NavigationEvent Alpha08.
Versão 1.0.0-alpha08
27 de agosto de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estes commits.
Novos recursos
- Adição de novas metas do Kotlin Multiplatform (KMP) aos artefatos
Navigation3 Runtime. ONavigation3 Runtimeagora é compatível com as seguintes plataformas: JVM (Android e desktop), nativa (Linux, iOS, watchOS, macOS, MinGW) e Web (JavaScript, WasmJS). (I55078, b/424410398, b/419294028, b/419046226). Observação: isso não fornece destinos KMP para o artefatoNavigation3 UI. Em outras plataformas, você precisará implementar seu próprioNavDisplaypersonalizado. Se quiser que ele seja compatível, vote no problema do Jetbrains aqui e acompanhe o progresso para receber mais suporte. - O objeto
NavDisplayInfoagora é público e pode ser usado para recuperar a lista de entradas visíveis doNavDisplay. (Ibc91f)
Mudanças na API
- Adicionamos um novo
NavBackStackSerializerpara ser usado em conjunto comrememberNavBackStacke realizar a restauração de estado. Agora,rememberNavBackStack()também usa umSavedStateConfigurationque pode ser usado para fornecer sua própria configuração. (I2f4d2, I4cd58, b/420443609).
Correções de bugs
- Foi corrigido um problema em que a navegação causava o disparo de eventos de ciclo de vida incorretos. (I8bf6d, b/425901162, b/434109022)
Problemas conhecidos
- Houve um bug introduzido por I8bf6d que fez com que os ciclos de vida fossem baseados em cenas em vez de entradas individuais, o que quebrou o ciclo de vida em todos os casos em que o
keyfornecido aoNavEntrynão é umStringou oNavEntrynão substituiu ocontentKeye o definiu como igual aokey. Isso foi corrigido para a próxima versão.Bundle(b/440145700)
Versão 1.0.0-alpha07
13 de agosto de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estes commits.
Atualização do MinSdk
- A minSdk padrão para o AndroidX foi movida da API 21 para a API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
Mudanças na API
SavedStateNavEntryDecoratoragora usa oSaveableStateRegistryintegrado aoSaveableStateProviderpara salvar e restaurar estados. (If8d9a).- O
predictivePopTransitionSpecagora recebe a borda de deslize como um parâmetro, permitindo personalizar a transição com base na borda em que o usuário iniciou o gesto de retorno preditivo. (I753a8).
Correções de bugs
- Corrigimos um problema que fazia as cenas personalizadas serem recalculadas infinitamente porque a cena mais recente não era lembrada. (I7ba84, b/418153031)
Atualização de dependências
- O Navigation3 agora depende do Navigation Event
1.0.0-alpha06.
Versão 1.0.0-alpha06
30 de julho de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estes commits.
Atualização de dependências
- O Navigation3 agora depende do Navigation Event
1.0.0-alpha05.
Versão 1.0.0-alpha05
2 de julho de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estes commits.
Mudanças de comportamento
- O estado do
NavEntryagora é estritamente baseado na lista atual de decoradores transmitida aoNavDisplay. Isso significa que os decoradores precisam ser trocados ao longo das backstacks no caso de várias backstacks para preservar o estado das NavEntries na backstack. Caso contrário, os estados serão limpos como se as entradas tivessem sido removidas (em vez de uma troca). (I7a759, b/428033667).
Versão 1.0.0-alpha04
18 de junho de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estes commits.
Mudanças na API
NavEntry.contentagora é particular. Para invocar o conteúdoNavEntry, chame a nova APINavEntry.Content(), que não exige mais um parâmetrokeypara ser invocada. (Icd0fd, b/420991203).NavEntry.keyagora é um campo particular. ONavEntrye os estados relevantes dele precisam ser identificados pelo novo campocontentKey, que é gerado pela nova lambdacontentKeyFactorye usa por padrão um hash salvável gerado porNavEntry.key(I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812).
Mudanças na dependência
- O Navigation3 agora depende do novo artefato
androidx.navigationevent.compose.
Versão 1.0.0-alpha03
4 de junho de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estes commits.
Correções de bugs
- O
Navigation3não vai mais limpar os estados do decorador parabackStacksque foram trocados e substituídos por outra instância debackStack. (I28a42, b/415076044).
Versão 1.0.0-alpha02
23 de maio de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estes commits.
Correções de bugs
- Foi corrigido um problema com o
SavedStateNavEntryDecoratorque causava colisões para diferentes classes de dados com os mesmos valores de propriedade. (b/418070648, Iff4775). - Correção de um problema de classe ausente que causava falhas ao executar sem declarar dependências explícitas. (b/419049149, I4b4ed)
Versão 1.0.0-alpha01
20 de maio de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha01. A versão 1.0.0-alpha01 contém estes commits.
Novos recursos
O Navigation3 é uma nova biblioteca de navegação criada especificamente para processar a navegação no app do Jetpack Compose. O artefato androidx.navigation3.runtime fornece os blocos de construção, enquanto o artefato androidx.navigation3.ui fornece a camada de UI pela API NavDisplay. Os desenvolvedores podem fornecer o próprio estado diretamente à função combinável NavDisplay, que muda o conteúdo com base nas mudanças no estado do desenvolvedor.
@Serialiable object Home : NavKey
@Serialiable object Chat : NavKey
val backStack = rememberNavBackStack(Home)
NavDisplay(backStack, entryProvider = entryProvider {
entry<Home> {
Column {
Text(“Home”)
Button(onClick = { backStack.add(Chat) } ) {
Text(“Go to Chat”)
}
}
}
entry<Chat> { /* My Composable Content */ }
})
Para mais informações, consulte o guia Navigation3.