Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jetpack Compose - Unresolved reference: observeAsState

I'm learning Jetpack Compose and I was trying to make a View Model for my @Composable.

In documentation (https://developer.android.com/codelabs/jetpack-compose-state#3) for observing state changes in composable they use observeAsState but in my implementation, the method cannot be found. I get instead Unresolved reference: observeAsState

ViewModel

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)
    }

}

Composable enter image description here

I am using Compose 1.0.0-beta01

like image 351
Valentin Avatar asked Mar 10 '21 07:03

Valentin


2 Answers

observeAsState is part of the runtime-livedata library.

Add the dependency to your module's build.gradle file. Replace $compose_version with the version of compose which you use, e.g. 1.0.0-beta01:

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

You can find the available versions here in Google's Maven repository.

like image 188
Alexander Hoffmann Avatar answered Nov 12 '22 14:11

Alexander Hoffmann


Not exactly answering your question, but as a suggestion you could migrate to Flow instead of using live data.

ViewModel ->

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

Composable ->

val yourList by yourViewModel.yourList.collectAsState()
like image 1
mario chois Avatar answered Nov 12 '22 16:11

mario chois