Fix: Jetpack Compose observerAsState Type Error har ingen metode

Da Jetpack Compose er en ny teknologi, vil der være klumper og bump, især med værktøj. Dette hurtige blogindlæg hjælper dig med at løse fejlen “Sort-tilstand har ingen metode getValue”, når du først begynder at observere tilstanden på din ViewModel.

Hvis du følger eksempelkoden i den officielle dokumentation for tilstanden ViewModel, vil du ende med at oprette en kode som denne:

class HelloViewModel : ViewModel() 

@Composable
enjoyable HelloScreen(helloViewModel: HelloViewModel = viewModel()) 
    // identify is the present worth of [helloViewModel.name]
    // with an preliminary worth of ""
    val identify: String by helloViewModel.identify.observeAsState("")
    // and many others

De første fejl, du får, vil involvere manglende afhængigheder, der nemt kan rettes ved at tilføje dem (Vær sikker på at du bruger de nyeste versioner, dette uddrag bliver forældet):

implementation "androidx.compose.runtime:runtime-livedata:$compose_version"
implementation "androidx.lifecycle:lifecycle-viewmodel-compose:1.Zero.Zero-alpha02"

Males så opstår den mest forvirrende fejl:

Sort ‘Stat’ har ingen metode ‘getValue (Intet ?, KProperty <*>)’ ‘og kan derfor ikke tjene som delegeret

Det har virkelig ikke en åbenlys løsning (og tak Florina for at have påpeget det for mig!). Det er her, værktøjet ikke har fanget kodningen. IDE kan ikke tilbyde dig en hurtig løsning.

Du skal importere getValue-metoden, så den kan bruges:

import androidx.compose.runtime.getValue

Din import kan variere, males bemærk den fremhævede blå nyligt (manuelt) tilføjede import til getValue:

Det er det! Den røde kompilering squiggles forsvinder, og du kan fortsætte med Jetpack Compose, ViewModels og observationsstatus.

God fornøjelse!

Leave a Comment

Your email address will not be published. Required fields are marked *