我正在学习 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
observeAsState
是 runtime-livedata
库的一部分。
将依赖项添加到模块的
build.gradle
文件中。将 $compose_version
替换为您使用的 compose 版本,例如1.0.0-beta01
:
implementation "androidx.compose.runtime:runtime-livedata:$compose_version"
不完全回答您的问题,但建议您可以迁移到 Flow 而不是使用实时数据。
视图模型->
val yourList: MutableStateFlow<List<String>> = MutableStateFlow(listOf("String1","String2","String3"))
可组合->
val yourList by yourViewModel.yourList.collectAsState()
CollectAsStateWithLifecycle
现在被谷歌开发者推荐用于 Android,它的生命周期 api 也很稳定。Flow 也被开发者推荐。
使用 compose-bom 也面临同样的问题。 IE
androidx.compose:compose-bom:2024.05.00
删除 compose-bom 并添加单独的
androidx.compose.runtime:runtime-livedata:$compose_version
实现解决了我的问题