如何修改mutableStateMapOf的值?

How do I modify the values of mutableStateMapOf?

提问人:t3chb0t 提问时间:11/9/2023 更新时间:11/9/2023 访问量:47

问:

我有一个类型的字段:mutableStateMapOf

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

我想通过一个修改它的值,所以我试了一下:Checkbox

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

但是,Kotlin 向我展示了一个 .怎么会这样?我以为我将其初始化为 .我不关注这里发生的事情。通常,当您初始化其中一个 s 时,它具有我用作参数的类型,但为什么这次不呢?dataPoolbooleanmapmutableState

Kotlin android-jetpack-compose 桌面应用程序

评论


答:

1赞 Thracian 11/9/2023 #1

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

你可以从没有SnapshotStateMap<String, Boolean>mutableStateMapOf=by

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

评论

1赞 Thracian 11/9/2023
顺便说一句,mutableStateListOf 没有像 mutableStateMapOf 这样的委派。为 mutableStateMapOf 提供此委派有什么意义?
0赞 t3chb0t 11/9/2023
事实上,它适用于 !这太疯狂了!顺便说一句,真是巧合。我只是在研究你关于带有可点击文本的复选框的另一个答案,所以你会得到更多的分数;-]=
0赞 Thracian 11/9/2023
谢谢。这也是一个非常好的问题,我甚至在你之前就投了赞成票:) 我真的很好奇为什么它有不起作用的委托