Jetpack Compose Navigation:获取当前目的地的路线作为字符串
Jetpack Compose Navigation: Get route of current destination as string
我正在使用 NavHost 和 NavHostController 在我的 Jetpack Compose 应用程序中导航。为了指定目的地,我使用基于字符串的路由:
NavHost(
navController,
startDestination = "FOO"
) {
composable("FOO") {
Foo()
}
composable("BAR") {
Bar()
}
}
我想使用 navController
将当前路线检索为字符串(FOO
或 BAR
)。我能找到的最接近的替代方案是 navController.currentDestination.id
,但是,returns 是一个数字 ID,而不是作为字符串的路由。
有什么方法可以检索这个值吗?
我正在使用 Jetpack Compose beta01 和 Compose Navigation alpha08。
已解决!
import androidx.navigation.compose.KEY_ROUTE
val currentRoute = navController.currentBackStackEntry?.arguments?.getString(KEY_ROUTE)
不是最干净的 IMO 解决方案,但它在官方 Android 文档中用于使用 compose 进行导航:https://developer.android.com/jetpack/compose/navigation?hl=it
从 androidx.navigation:navigation-compose
版本 2.4.0-alpha01
开始,androidx.navigation.compose.KEY_ROUTE
被替换为 navBackStackEntry?.destination?.route
。
The KEY_ROUTE argument has been replaced with the route property on NavDestination, allowing you to call navBackStackEntry.destination.route directly.
示例代码:
val currentRoute = navController.currentBackStackEntry?.destination?.route
或者,如果您需要观察导航:
val navBackStackEntry by navController.currentBackStackEntryAsState()
when (val currentRoute = navBackStackEntry?.destination?.route) {
// do something with currentRoute
}
我正在使用 NavHost 和 NavHostController 在我的 Jetpack Compose 应用程序中导航。为了指定目的地,我使用基于字符串的路由:
NavHost(
navController,
startDestination = "FOO"
) {
composable("FOO") {
Foo()
}
composable("BAR") {
Bar()
}
}
我想使用 navController
将当前路线检索为字符串(FOO
或 BAR
)。我能找到的最接近的替代方案是 navController.currentDestination.id
,但是,returns 是一个数字 ID,而不是作为字符串的路由。
有什么方法可以检索这个值吗?
我正在使用 Jetpack Compose beta01 和 Compose Navigation alpha08。
已解决!
import androidx.navigation.compose.KEY_ROUTE
val currentRoute = navController.currentBackStackEntry?.arguments?.getString(KEY_ROUTE)
不是最干净的 IMO 解决方案,但它在官方 Android 文档中用于使用 compose 进行导航:https://developer.android.com/jetpack/compose/navigation?hl=it
从 androidx.navigation:navigation-compose
版本 2.4.0-alpha01
开始,androidx.navigation.compose.KEY_ROUTE
被替换为 navBackStackEntry?.destination?.route
。
The KEY_ROUTE argument has been replaced with the route property on NavDestination, allowing you to call navBackStackEntry.destination.route directly.
示例代码:
val currentRoute = navController.currentBackStackEntry?.destination?.route
或者,如果您需要观察导航:
val navBackStackEntry by navController.currentBackStackEntryAsState()
when (val currentRoute = navBackStackEntry?.destination?.route) {
// do something with currentRoute
}