navigation3

  
Navigation 3 是一个专为与 Compose 搭配使用而设计的全新导航库。
最近更新时间 稳定版 候选版 Beta 版 Alpha 版
2025 年 6 月 18 日 - - - 1.0.0-alpha04

声明依赖项

如需添加 navigation3 的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库

在应用或模块的 build.gradle 文件中添加所需工件的依赖项:

Groovy

dependencies {
    implementation "androidx.navigation3.navigation3-runtime:1.0.0-alpha04"
    implementation "androidx.navigation3.navigation3-ui:1.0.0-alpha04"
}

Kotlin

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

如需详细了解依赖项,请参阅添加 build 依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

此工件没有版本说明。

版本 1.0

版本 1.0.0-alpha04

2025 年 6 月 18 日

发布了 androidx.navigation3:navigation3-*:1.0.0-alpha04。版本 1.0.0-alpha04 包含这些提交内容

API 变更

  • NavEntry.content 现在是私有的。如需调用 NavEntry 内容,请调用新的 NavEntry.Content() API,该 API 不再需要 key 参数即可调用。(Icd0fdb/420991203
  • NavEntry.key 现在是私有字段。NavEntry 及其相关状态应通过新的 contentKey 字段进行标识,该字段由新的 contentKeyFactory lambda 生成,默认为由 NavEntry.key 生成的可保存哈希 (I81a6cb/422001357b/420991203 I2d7d4b/420991203b/422841812)

依赖项变更

  • Navigation3 现在依赖于新的 androidx.navigationevent.compose 工件。

版本 1.0.0-alpha03

2025 年 6 月 4 日

发布了 androidx.navigation3:navigation3-*:1.0.0-alpha03。版本 1.0.0-alpha03 包含这些提交内容

bug 修复

  • Navigation3 不会再为已被换出并替换为其他 backStack 实例的 backStacks 清除修饰器状态。(I28a42b/415076044

版本 1.0.0-alpha02

2025 年 5 月 23 日

发布了 androidx.navigation3:navigation3-*:1.0.0-alpha02。版本 1.0.0-alpha02 包含这些提交内容

bug 修复

  • 修复了 SavedStateNavEntryDecorator 存在的问题,该问题会导致具有相同属性值的不同数据类发生冲突。(b/418070648Iff4775
  • 修复了缺少类的问题,该问题会导致在运行时未声明显式依赖项时发生崩溃。(b/419049149I4b4ed

版本 1.0.0-alpha01

2025 年 5 月 20 日

发布了 androidx.navigation3:navigation3-*:1.0.0-alpha01。版本 1.0.0-alpha01 包含这些提交内容

新功能

Navigation3 是一个专为处理 Jetpack Compose 应用内导航而构建的新导航库。androidx.navigation3.runtime 工件提供构建块,而 androidx.navigation3.ui 工件通过 NavDisplay API 提供界面层。开发者可以直接向 NavDisplay 可组合函数提供自己的状态,该函数会根据开发者状态的变化更改内容。

@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 */ }
})

如需了解详情,请参阅 Navigation3 指南