用途:在 Jetpack Compose 应用中实现导航,包括搭建导航结构、屏幕间传参、处理深链接,以及嵌套图与测试。
依赖与配置:添加 androidx.navigation:navigation-compose:2.8.5;如需类型安全导航,添加 org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 并启用 kotlin("plugin.serialization") version "2.0.21"。测试需 androidTestImplementation("androidx.navigation:navigation-testing:2.8.5")。
主要能力:用 @Serializable 对象或数据类定义路由;通过 rememberNavController 创建 NavController,在 NavHost 中用 composable<T> 注册目的地;用 backStackEntry.toRoute() 或 SavedStateHandle.toRoute<T>() 读取参数;支持导航选项(popUpTo、launchSingleTop、restoreState)、底部导航、嵌套图(navigation<AuthGraph>)、深链接(navDeepLink 与 Manifest intent-filter)、自适应导航(NavigationSuiteScaffold)以及 Compose 测试。
使用方式:定义 @Serializable 路由后,在 NavHost 的 startDestination 指定起始页,跳转时调用 navController.navigate(Profile(userId)),返回用 popBackStack()。底部导航常配合 popUpTo(navController.graph.findStartDestination().id) 与 saveState/restoreState。
限制与注意:参数只传 ID 或基本类型,不要传复杂对象;NavController 应在 NavHost 外创建;深链接通知的 PendingIntent 在 Android 12+ 需加 FLAG_IMMUTABLE;资料建议使用类型安全路由而非字符串路由。其余未提供。