您可以将 NavHostController 传递给子 Composable 以允许访问 navController.navigate("Route") 吗?
Can you pass NavHostController to a child Composable in order to allow access to the navController.navigate("Route")?
我是 Jetpack Compose 的新手,正在努力了解如何将 Navigation 库与 Compose 集成。
我已经成功地实现了底部导航,但现在正在努力访问子组件中的 .navigate("route") 方法。我是否应该将 navController 作为参数从 NavHost 内部的可组合项中传递?这是我的代码,让事情更清楚。
这是我的 HomeScreen.kt @Composable,它调用 rememberNavController() 方法以及 NavHost() 可组合项,如下所示...
@Composable
fun HomeScreen() {
val navController = rememberNavController()
...
Scaffold(
...
) {
NavHost(navController, startDestination = "route") {
composable("route") { Settings(navController) }
}
}
所以在这里您可以看到我将 navController 作为参数传递给 Settings 可组合项。我不确定这是否正确。现在,如果可能的话,最终我想从设置可组合项中访问 navController.navigate("route") 方法,类似于以下内容。
@Composable
fun Settings(navController: NavHostController) {
...
Button(onClick = {navController.navigate("route")}) {
Text(text = "button text")
}
...
}
不幸的是,我无法访问 .navigate 方法,因为它说“None 可以使用提供的参数调用以下函数。”感谢您的时间和帮助!!
navigate("route")
方法是an extension method。因此您必须显式导入它:
import androidx.navigation.compose.navigate
我是 Jetpack Compose 的新手,正在努力了解如何将 Navigation 库与 Compose 集成。 我已经成功地实现了底部导航,但现在正在努力访问子组件中的 .navigate("route") 方法。我是否应该将 navController 作为参数从 NavHost 内部的可组合项中传递?这是我的代码,让事情更清楚。
这是我的 HomeScreen.kt @Composable,它调用 rememberNavController() 方法以及 NavHost() 可组合项,如下所示...
@Composable
fun HomeScreen() {
val navController = rememberNavController()
...
Scaffold(
...
) {
NavHost(navController, startDestination = "route") {
composable("route") { Settings(navController) }
}
}
所以在这里您可以看到我将 navController 作为参数传递给 Settings 可组合项。我不确定这是否正确。现在,如果可能的话,最终我想从设置可组合项中访问 navController.navigate("route") 方法,类似于以下内容。
@Composable
fun Settings(navController: NavHostController) {
...
Button(onClick = {navController.navigate("route")}) {
Text(text = "button text")
}
...
}
不幸的是,我无法访问 .navigate 方法,因为它说“None 可以使用提供的参数调用以下函数。”感谢您的时间和帮助!!
navigate("route")
方法是an extension method。因此您必须显式导入它:
import androidx.navigation.compose.navigate