为什么我在 JetPack Compose 中使用 Navigating with arguments 时可以毫无问题地删除代码 navArgument?

Why can I remove the code navArgument without problem when I use Navigating with arguments in JetPack Compose?

我正在学习 Jetpack Compose Navigation。

代码 A 来自 article。效果不错。

我无法完全理解代码 navArgument 的含义。我发现删除了代码 navArgument 的代码 B 也可以正常工作。

代码 navArgument 是什么意思?

代码A

val accountsName = RallyScreen.Accounts.name
NavHost(...) {
    ...
    composable(
        "$accountsName/{name}",
        arguments = listOf(
            navArgument("name") {
                // Make argument type safe
                type = NavType.StringType
            }
        )
    ) { entry -> // Look up "name" in NavBackStackEntry's arguments
        val accountName = entry.arguments?.getString("name")
        ..
    }
}

代码B

val accountsName = RallyScreen.Accounts.name
NavHost(...) {
    ...
    composable(
        "$accountsName/{name}"       
    ) { entry -> // Look up "name" in NavBackStackEntry's arguments
        val accountName = entry.arguments?.getString("name")
        ...
    }
}

根据documentation

By default, all arguments are parsed as strings. You can specify another type by using the arguments parameter to set a type

所以第二个选项有效,如果你的参数都是字符串类型就可以使用

navArgument 当默认的字符串类型不适合你的参数时应该使用