我有一个类型为mutableStateMapOf的字段:

var dataPool by mutableStateMapOf("archive" to true, "pending" to true)

我想通过Checkbox来修改它的值,所以我try 了这个:

 Checkbox(checked = true, onCheckedChange = {viewModel.dataPool["archive"]=it})

然而,Kotlin告诉我dataPoolboolean.怎么回事?我以为我把它初始化为map了.我不明白这里发生了什么.通常,当您初始化mutableState中的一个时,它的类型与我用作参数的类型相同,但这次为什么不呢?

推荐答案

当您try 在Compose版本1.5.4上读取它时,它为什么有一个返回布尔值并抛出异常委托,这真的很奇怪.并且不允许您也添加括号.

你可以用=而不是bymutableStateMapOf得到SnapshotStateMap<String, Boolean>

val dataPool = remember {
    mutableStateMapOf("archive" to true, "pending" to false)
}

Kotlin相关问答推荐

升级使用jOOQ Gradle插件生成代码失败

数据源配置

按钮无法在 Android Studio 上打开新活动

返回 kotlin 中的标签和 lambda 表达式

如何在 kotlin 中创建自定义迭代器并添加到现有类?

具有泛型类型的 Kotlin 密封接口不会为其子类型推断约束

如何通过 compose 处理剪切区域?

类型不匹配:Required: Context, Found: Intent

如何在 Android 的 Fragment 中使用 setUserVisibleHint

Kotlin 代码是如何编译成原生代码的?

比较 Kotlin 中的可比对象列表

Kotlin 有 array.indexOf 但我无法弄清楚如何做 array.indexOfBy { lambda }

未找到导入 kotlinx.coroutines.flow.*

在 Kotlin 中编写一个等于 Int.MIN_VALUE 的十六进制整数文字

Kotlin - 错误:Could not find or load main class _DefaultPackage

如何在不绑定ViewModel(MVVM)中的UI的情况下使用android导航?

Kotlin:测试中的 java.lang.NoSuchMethodError

为什么 Kotlin 会收到这样的 UndeclaredThrowableException 而不是 ParseException?

从 Kotlin 访问 Integer.class

可见性不适用于 Kotlin