Jetpack Compose - 未解析的参考:observeAsState

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

我正在学习 Jetpack Compose,我正在尝试为我的 @Composable 制作一个视图模型。

在文档(https://developer.android.com/codelabs/jetpack-compose-state#3)中,为了观察可组合项中的状态变化,他们使用

observeAsState
,但在我的实现中,找不到该方法。我反而得到了
Unresolved reference: observeAsState

视图模型

class MainActivityViewModel : ViewModel() {
    val list: LiveData<MutableList<String>> = MutableLiveData(mutableListOf("Ana", "are", "mere"))

    fun addString(item: String) {
        val list: MutableList<String> = list.value!!
        list.add(item)
    }

}

可组合

我正在使用 Compose 1.0.0-beta01

android viewmodel android-jetpack-compose
4个回答
183
投票

observeAsState
runtime-livedata
库的一部分。

将依赖项添加到模块的

build.gradle
文件中。将
$compose_version
替换为您使用的 compose 版本,例如
1.0.0-beta01

implementation "androidx.compose.runtime:runtime-livedata:$compose_version"

您可以在 Google 的 Maven 存储库中找到可用版本


12
投票

不完全回答您的问题,但建议您可以迁移到 Flow 而不是使用实时数据。

视图模型->

val yourList: MutableStateFlow<List<String>> = MutableStateFlow(listOf("String1","String2","String3"))

可组合->

val yourList by yourViewModel.yourList.collectAsState()

3
投票

CollectAsStateWithLifecycle
现在被谷歌开发者推荐用于 Android,它的生命周期 api 也很稳定。Flow 也被开发者推荐。


0
投票

使用 compose-bom 也面临同样的问题。 IE

androidx.compose:compose-bom:2024.05.00

删除 compose-bom 并添加单独的

androidx.compose.runtime:runtime-livedata:$compose_version
实现解决了我的问题

© www.soinside.com 2019 - 2024. All rights reserved.