navigation3

  
O Navigation 3 é uma nova biblioteca de navegação projetada para funcionar com o Compose.
Atualização mais recente Versão estável Versão candidata a lançamento Versão Beta Versão Alfa
8 de outubro de 2025 - - - 1.0.0-alpha11

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-alpha11"
    implementation "androidx.navigation3:navigation3-ui:1.0.0-alpha11"
}

Kotlin

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.0.0-alpha11")
    implementation("androidx.navigation3:navigation3-ui:1.0.0-alpha11")
}

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.

Criar novo problema

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-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 calculateScene em SceneStrategy não é mais @Composable. Em vez disso, considere mover esse trabalho para a construção do seu método SceneStrategy (ou seja, em um método rememberMySceneStrategy()) que permite definir totalmente o ciclo de vida de qualquer valor rememberSaveable ou instruções remember principais com base nos valores corretos. (If1733, b/448709506).
  • O parâmetro onBack para SceneStrategy.calculateScene foi movido para o novo escopo do receptor de SceneStrategyScope para 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 onBack transmitida para NavDisplay e para seu SceneStrategy não fornece mais um parâmetro count: Int para indicar quando várias entradas precisam ser removidas. Em vez disso, a lambda () -> Unit será 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 NavEntryWrapper e substitua a funcionalidade dela por uma classe NavEntry final com um novo construtor secundário que usa um NavEntry com 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 um NavEntryDecorator, foi removida e substituída pela classe NavEntryDecorator, que agora é pública e aberta para criação de subclasses. (If81f8, b/444447434, b/447381176)
  • SavedStateNavEntryDecorator foi renomeado como SaveableStateHolderNavEntryDecorator porque decora entradas com um SaveableStateHolder. O decorador também foi refatorado de uma função para uma classe, já que é funcionalmente uma fábrica para NavEntryDecorator. (Ie6013, b/447381176).
  • As telas personalizadas que usam SceneState como alternativa ao NavDisplay não precisam mais usar o local de composição LocalEntriesToRenderInCurrentScene, que agora é interno. (Ic40ef, b/414668196)
  • SceneSetupNavEntryDecorator e rememberSceneSetupNavEntryDecorator() 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, SinglePaneScene e SceneState agora 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 rememberNavBackStack removendo o parâmetro de tipo genérico redundante. A função agora aceita vararg elements: NavKey. (I03e45)
  • As animações padrão para NavDisplay agora fazem parte da API comum, o que permite que elas sejam chamadas de todas as plataformas. (I71af9, b/447147159).
  • Renomeie EntryProviderBuilder para EntryProviderScope para refletir com precisão que a classe é uma DSL do Kotlin que fornece um escopo para criar NavEntries. (Ia7465)

Correções de bugs

  • rememberNavBackStack() agora aplica a serialização polimórfica para NavKey e exige um SavedStateConfiguration personalizado 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 NavDisplay que usa uma lista de NavEntry<T> decorada por rememberDecoratedNavEntries. (I4025b, b/441940314)
  • DialogScene foi movido para um novo pacote. (Ia5840).
  • Remoção da API pública DecorateNavEntry. Em vez disso, use rememberDecoratedNavEntries para incluir um NavEntry com uma lista de decoradores. (Id8c09).
  • A interface do Navigation3 agora oferece novas propriedades transitionSpec padrão. (Ibcabd).
  • Adicionamos um novo objeto SceneState para ajudar a gerenciar cenas. Isso também fornece uma nova sobrecarga de NavDisplay que usa o SceneState e o NavigationEventState. (Idfb46, b/444479133).
  • O NavDisplay agora permite personalizar as transições com base no Scene de origem e destino, analisando o currentState e o targetState do Transition. (I906cc, b/443872322).
  • NavigationEventInfo agora é um abstract class em vez de um interface. Atualize todas as implementações personalizadas para herdar da classe (por exemplo, data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)
  • As APIs de manipulador navigationevent-compose foram atualizadas. NavigationEventHandler e NavigationBackHandler (e variantes) agora são compatíveis com uma nova sobrecarga que aceita NavigationEventStates içados. As sobrecargas simples (que usam currentInfo) 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 rememberDecoratedNavEntries que usa uma lista de NavEntry para decorar. As entradas de entrada já podem estar decoradas com outros decoradores de entrada. (I5a034, b/444230270)
  • Remover parâmetros de tipo curinga navigation3 (I02540)
  • Melhoria no processamento de genéricos para a DSL entryProvider. Se você importava androidx.navigation3.runtime.entry antes, isso não é mais necessário. (I299fc).
  • Restrinja a sobrecarga NavBackStackSerializer baseada 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 sobrecarga SavedStateConfiguration explícita em código multiplataforma. (I73313, b/420443609).
  • Transformar o swipeEdge do NavigationEvent em um @IntDef (Icee54, b/443950342)
  • Restringe a serialização de NavBackStack ao 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 sobrecarga rememberNavBackStack com um SavedStateConfiguration explícito. (I1e418, b/420443609)

Correções de bugs

  • Correção de uma falha durante a volta preditiva quando um NavDisplay aninhado 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 DecoratedNavEntryProvider foi substituído por rememberDecoratedNavEntries, que cria e retorna NavEntries decoradas com a lista de decoradores fornecidos (I0fe1c, b/441328236).
  • NavBackStack agora é genérico no tipo NavKey. Isso permite que apps e bibliotecas definam tipos de chaves personalizados para as pilhas de retorno, em vez de ficarem restritos a NavKey. (I4d190,Iad2f4, b/420443609)
  • O NavBackStack agora é @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).
  • RememberNavBackStack foi movido para commonMain para garantir que seja fornecido em todas as segmentações de plataforma. (Id69e7, b/420443609)

Correções de bugs

  • O NavDisplay agora move corretamente cada NavEntry individual para o Lifecycle.State correto. (I30aac, b/440145700)
  • Foi corrigido um problema em que NavDisplay ignorava qualquer NavigationEventDispatcherOwner aninhado definido usando o LocalNavigationEventDispatcherOwner da biblioteca NavigationEvent. (I6224a).

Mudanças na dependência

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. O Navigation3 Runtime agora é 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 artefato Navigation3 UI. Em outras plataformas, você precisará implementar seu próprio NavDisplay personalizado. Se quiser que ele seja compatível, vote no problema do Jetbrains aqui e acompanhe o progresso para receber mais suporte.
  • O objeto NavDisplayInfo agora é público e pode ser usado para recuperar a lista de entradas visíveis do NavDisplay. (Ibc91f)

Mudanças na API

  • Adicionamos um novo NavBackStackSerializer para ser usado em conjunto com rememberNavBackStack e realizar a restauração de estado. Agora, rememberNavBackStack() também usa um SavedStateConfiguration que 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 key fornecido ao NavEntry não é um String ou o NavEntry não substituiu o contentKey e o definiu como igual ao key. 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

Mudanças na API

  • SavedStateNavEntryDecorator agora usa o SaveableStateRegistry integrado ao SaveableStateProvider para salvar e restaurar estados. (If8d9a).
  • O predictivePopTransitionSpec agora 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

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

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 NavEntry agora é estritamente baseado na lista atual de decoradores transmitida ao NavDisplay. 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.content agora é particular. Para invocar o conteúdo NavEntry, chame a nova API NavEntry.Content(), que não exige mais um parâmetro key para ser invocada. (Icd0fd, b/420991203).
  • NavEntry.key agora é um campo particular. O NavEntry e os estados relevantes dele precisam ser identificados pelo novo campo contentKey, que é gerado pela nova lambda contentKeyFactory e usa por padrão um hash salvável gerado por NavEntry.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 Navigation3 não vai mais limpar os estados do decorador para backStacks que foram substituídos por outra instância de backStack. (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 SavedStateNavEntryDecorator que 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.