Jetpack Compose - 未解决的参考:observeAsState

Val*_*tin 11 android viewmodel android-jetpack-compose

我正在学习 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)
    }

}
Run Code Online (Sandbox Code Playgroud)

可组合 在此处输入图片说明

我正在使用 Compose 1.0.0-beta01

Ale*_*ann 35

observeAsStateruntime-livedata依赖的一部分。

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

implementation "androidx.compose.runtime:runtime-livedata:$compose_version"
Run Code Online (Sandbox Code Playgroud)

  • 尽管如此,相同的文档并未针对所需的依赖项进行更新 (8认同)

小智 10

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

视图模型->

val yourList: MutableStateFlow<List<String>> = MutableStateFlow(listOf("String1","String2","String3"))
Run Code Online (Sandbox Code Playgroud)

可组合->

val yourList by yourViewModel.yourList.collectAsState()
Run Code Online (Sandbox Code Playgroud)