Android

Düzeltme: Jetpack Compose gözlemciAsState Type Error’ın yöntemi yok

Jetpack Compose’un yeni bir teknoloji olmasıyla, özellikle takımlarda topaklar ve tümsekler olacaktır. Bu hızlı blog yazısı, ViewModel’inizde durumu ilk kez gözlemlemeye başladığınızda “Tür durumunun getValue yöntemi yok” hatasını çözmenize yardımcı olur.

Örnek kodu takip ederseniz ViewModel durumu için resmi belgelersonunda şöyle bir kod oluşturacaksınız:

class HelloViewModel : ViewModel() {
    private val _name = MutableLiveData("")
    val name: LiveData<String> = _name
}

@Composable
fun HelloScreen(helloViewModel: HelloViewModel = viewModel()) {
    // name is the current value of [helloViewModel.name]
    // with an initial value of ""
    val name: String by helloViewModel.name.observeAsState("")
    // etc
}

Alacağınız ilk hata, eksik bağımlılıkları içerecek ve bunları ekleyerek kolayca düzeltilecektir (lütfen en son sürümleri kullandığınızdan emin olun, bu snippet güncelliğini yitirecek):

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

Ama sonra en kafa karıştırıcı hata ortaya çıkıyor:

‘State’ tipinin ‘getValue(Nothing?, KProperty<*>)’ yöntemi yoktur ve bu nedenle bir temsilci olarak hizmet edemez

Gerçekten bariz bir çözümü yok (ve teşekkür ederim floransa bana gösterdiğin için!). Takımların kodlamaya yetişmediği yer burasıdır. IDE size hızlı bir düzeltme sunamaz.

Kullanılabilmesi için getValue yöntemini içe aktarmanız gerekir:

import androidx.compose.runtime.getValue

İçe aktarmalarınız farklı olabilir, ancak getValue için yeni (manuel) eklenen içe aktarmanın vurgulanan maviye dikkat edin:

Bu kadar! Kırmızı derleme dalgaları kaybolur ve Jetpack Compose, ViewModel ve gözlem durumu ile devam edebilirsiniz.

Zevk almak!

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Başa dön tuşu