喷气背包组合导航的多个参数

时间:2021-01-02 18:41:44

标签: android android-jetpack-compose android-jetpack-navigation

如何声明具有多个导航参数的导航路线?我已经检查了 documentationall of these 文章(似乎只是重申了文档所说的内容),我只能找到带有一个的路线示例论证。

这是我所拥有的:

composable(
  route = "createExercise/{exerciseId}",
  arguments = listOf(navArgument("exerciseId") { type = NavType.IntType })
) { backStackEntry ->
  CreateExerciseScreen(
    exerciseId = backStackEntry.arguments!!.getInt("exerciseId"),
  )
}

这是我想要的:

composable(
  route = "createExercise/{exerciseId},{workoutId}",
  arguments = listOf(
    navArgument("exerciseId") { type = NavType.IntType },
    navArgument("workoutId") { type = NavType.IntType },
  )
) { backStackEntry ->
  CreateExerciseScreen(
    exerciseId = backStackEntry.arguments!!.getInt("exerciseId"),
    workoutId = backStackEntry.arguments!!.getInt("workoutId"),
  )
}

我为上面的示例随意选择了逗号分隔的语法,而不是我正在寻找的实际语法。

所以,我的问题是:在声明导航路线时,多个参数的正确语法是什么? (可选参数呢?)

1 个答案:

答案 0 :(得分:8)

根据文档:

<块引用>

您可以将其视为通向特定目的地的隐式深层链接。

因此它遵循与网络上任何其他 implicit deep link 和 RESTful URL 的约定相同的约定,通常使用 / 来分隔不同的参数以形成 URL 的路径 - 这包括所需的参数:

createExercise/{exerciseId}/{workoutId}

根据optional arguments documentation,必需参数的路径后面可以跟一个或多个查询参数形式的任意数量的可选参数:

createExercise/{exerciseId}/{workoutId}?setNumber={setNumber}&repNumber={repNumber}