savedStateHandle[key, value]映射的创建点在哪里?

问题描述 投票:0回答:1

首先,抱歉我的英语不好。

https://github.com/google-developer-training/basic-android-kotlin-compose-training-inventory-app/tree/main

使用此应用程序并且

https://developer.android.com/codelabs/basic-android-kotlin-compose-update-data-room?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics- compose-unit-6-pathway-2%3Fhl%3Dko%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-update-data-room#5

阅读本章

class ItemDetailsViewModel
有以下声明。

private val itemId: Int = checkNotNull(savedStateHandle[ItemDetailsDestination.itemIdArg])

我知道savedStateHandle必须有一个设置部分,例如

operator fun set(key: String, value: Any?) { initialState[key] = value }

所以savedStateHandle使用键加载值。

此时,我在应用程序中找不到

savedStateHandle
使用
ItemDetailsDestination.itemIdArg
键设置他的值。

问ChatGPT,

savedStateHandle
不能自动创建值,必须直接设置键值映射。但ChatGPT也找不到设置点。

我对“无用”感到好奇吗?在找到答案之前我无法入睡。 请有人让我入睡。

kotlin viewmodel keymapping
1个回答
0
投票

该参数是通过 Compose 设置的 带参数的导航

正如您在

InventoryNavGraph.kt
中所看到的,
ItemDetailsScreen
在其目标中有一个名为
ItemDetailsDestination.itemIdArg
的参数。

        composable(
            route = ItemDetailsDestination.routeWithArgs,
            arguments = listOf(navArgument(ItemDetailsDestination.itemIdArg) {
                type = NavType.IntType
            })
        ) {
            ItemDetailsScreen(
                //...
© www.soinside.com 2019 - 2024. All rights reserved.