gpt4 book ai didi

android - 为什么我不能使用 `MutableState` 作为属性委托(delegate)?

转载 作者:行者123 更新时间:2023-12-04 12:33:01 25 4
gpt4 key购买 nike

我正在尝试使用 MutableState 的实例作为属性(property)代表。
这是我所拥有的:val countState = remember { mutableStateOf(0) }这就是我想要的:var count by remember { mutableStateOf(0) }但是,当我使用 by关键字,我得到编译器错误:Type 'TypeVariable(T)' has no method 'getValue(Nothing?, KProperty<*>)' and thus it cannot serve as a delegate怎么了?

最佳答案

作为代表,MutableState需要一个 getValue函数(用于读取值)和 setValue函数(用于写入值)。
当您访问 MutableState通过 mutableStateOf ,您使用导入:import androidx.compose.runtime.mutableStateOf但是,此导入不包括 getValuesetValue MutableState 的函数- 它们在单独的文件中被定义为扩展函数。要访问它们,需要对该文件进行显式导入。
这本身通常不是问题 - 如果您键入:countState.getValue(...)Android Studio 将自动为您建议所需的导入。
但是,当您使用 by 时,这是一个问题。关键字 - Android Studio 不会自动为您建议导入。相反,它会给出 cannot serve as a delegate错误,没有任何指示您需要做什么。
所以解决方法是自己手动添加扩展函数的导入:

import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
希望 IDE 团队中的某个人将来可以使这一点更加明显 - 导入的自动建议将是理想的!

关于android - 为什么我不能使用 `MutableState` 作为属性委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67360038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com