47
votes

JETPACK COMPOSE - Référence non résolue: observeSState

J'apprends Jetpack Compose et j'essayais de créer un modèle de vue pour mon @composable.

dans la documentation ( https://developer.android.com/codelabs/jetpack-compose-state#3 ) Pour observer les modifications d'état dans composables qu'ils utilisent observeasState code > Mais dans mon implémentation, la méthode ne peut être trouvée. Je reçois à la place Référence non résolue: observeSState

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

J'utilise Compose 1.0.0-Beta01


1 commentaires

Juste pour info, si quelqu'un lit ceci et ne suit pas: la question d'origine de 2021 fait référence à l'État Codelab v2021. En 2022, un nouvel état Codelab a été créé et téléchargé, donc l'URL ci-dessus ne vous emmène plus dans un endroit où vous pouvez voir le code et cette API, mais une page dans le nouveau CodeLab. Acclamations!


2 Réponses :


112
votes

ObserveasState fait partie de la bibliothèque runtime-livedata .

Ajoutez la dépendance au fichier build.gradle de votre module. Remplacez $ compose_version par la version de Compose que vous utilisez, par ex. 1.0.0-beta01 :

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

Vous pouvez trouver les versions disponibles ici dans le référentiel maven de Google .


1 commentaires

Pourtant, la même documentation n'est pas mise à jour pour les dépendances requises



0
votes

ne répond pas exactement à votre question, mais comme suggestion, vous pouvez migrer vers le flux au lieu d'utiliser des données en direct.

ViewModel ->

val yourList by yourViewModel.yourList.collectAsState()

Composable -> p>

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


1 commentaires

La même .. la méthode n'est pas trouvée