SNM*_*SNM 68 android kotlin android-jetpack android-jetpack-compose
我正在尝试使用 jetpack compose 中的 observeAsState 从 LiveData 获取值,但我收到一个奇怪的错误
类型 'State<List?>' 没有方法 'getValue(Nothing?, KProperty<*>)',因此它不能作为委托
@Composable
fun UserScreen(userViewModel:UserViewModel){
val items: List<User> by userViewModel.fetchUserList.observeAsState()
UserList(userList = items)
}
Run Code Online (Sandbox Code Playgroud)
class UserViewModel: ViewModel() {
private val dataSource = UserDataSource()
val fetchUserList = liveData {
emit(dataSource.dummyUserList)
}
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*Cen 131
如果您收到未定义 observeAsState 或 getValue 的编译器错误,请确保您具有以下导入:
import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
Run Code Online (Sandbox Code Playgroud)
此信息来自“在 Jetpack Compose 中使用状态”代码实验室中的步骤 #4 。
Kar*_*k H 55
对我来说,手动/显式导入以下两个 api 可以解决此编译问题,
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
Run Code Online (Sandbox Code Playgroud)
这是参考, https://developer.android.com/jetpack/compose/state#state-in-composables
Val*_*kov 47
要修复错误,请添加以下导入:
// for a 'val' variable
import androidx.compose.runtime.getValue
// for a `var` variable also add
import androidx.compose.runtime.setValue
// or just
import androidx.compose.runtime.*
Run Code Online (Sandbox Code Playgroud)
要使用一个变量作为一个财产委托你应该提供操作功能为只读变量,以及对功能的变量。getValue
val
getValue
setValue
var
要了解有关如何在 jetpack compose 中组合属性委托和状态的更多信息,请参阅使用记住在可组合文档部分中创建内部状态。还有一个解释在在撰写思考的视频。
COR*_*ian 32
你可以使用:import androidx.compose.runtime.*
必要的进口有:
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
import androidx.compose.runtime.mutableStateOf
var value by remember { mutableStateOf("") }
Run Code Online (Sandbox Code Playgroud)
小智 13
只需在所有导入库下方手动添加此行即可。
import androidx.compose.runtime.*
Run Code Online (Sandbox Code Playgroud)
小智 8
我认为项目类型必须是可以为空的,因为您观察了 LiveData:
val items: List<User>? by userViewModel.fetchUserList.observeAsState()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8719 次 |
最近记录: |