Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

241
Views
El tipo 'State<List<User>?>' no tiene el método 'getValue(Nothing?, KProperty<*>)' y, por lo tanto, no puede servir como delegado

Estoy tratando de obtener un valor de LiveData con observeAsState en jetpack compose, pero aparece un error extraño

El tipo 'State<List?>' no tiene el método 'getValue(Nothing?, KProperty<*>)' y, por lo tanto, no puede servir como delegado

Código

 @Composable fun UserScreen(userViewModel:UserViewModel){ val items: List<User> by userViewModel.fetchUserList.observeAsState() UserList(userList = items) }

ingrese la descripción de la imagen aquí

Ver modelo

 class UserViewModel: ViewModel() { private val dataSource = UserDataSource() val fetchUserList = liveData { emit(dataSource.dummyUserList) } }
over 4 years ago · Hanz Gallego
8 answers
Answer question

0

Creo que el tipo de elementos debe ser anulable ya que observa LiveData:

 val items: List<User>? by userViewModel.fetchUserList.observeAsState()
over 4 years ago · Hanz Gallego Report

0

Si obtiene un error del compilador que observeAsState o getValue no están definidos, asegúrese de tener las siguientes importaciones:

 import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState

Esta información proviene del paso n.º 4 del laboratorio de código " Uso del estado en Jetpack Compose ".

over 4 years ago · Hanz Gallego Report

0

Para corregir el error, agregue las siguientes importaciones:

 // for a 'val' variable import androidx.compose.runtime.getValue // for a `var` variable also add import androidx.compose.runtime.setValue // or just import androidx.compose.runtime.*

Para usar una variable como un delegado de propiedad , debe proporcionar la función de operador getValue para las variables val de solo lectura y las funciones getValue y setValue para las variables var .

Para obtener más información sobre cómo se combinan los delegados de propiedad y el estado en la redacción de jetpack, consulte Usar recordar para crear un estado interno en una sección de documentación componible . También hay una explicación en el video Thinking in Compose .

over 4 years ago · Hanz Gallego Report

0

En mi caso, en una aplicación de composición, fue esta importación faltante la que provocó el error.

importar androidx.compose.getValue

over 4 years ago · Hanz Gallego Report

0

Agregar una dependencia solucionó el problema para mí:

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

Gracias a Tayaab Mizhar

over 4 years ago · Hanz Gallego Report

0

Podrías usar: import androidx.compose.runtime.*


Las importaciones necesarias son:

 import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.runtime.getValue import androidx.compose.runtime.setValue import androidx.compose.runtime.mutableStateOf var value by remember { mutableStateOf("") }
over 4 years ago · Hanz Gallego Report

0

Necesitas importar

 import androidx.compose.runtime.getValue

que importará esta función que es básicamente by

 inline operator fun <T> State<T>.getValue(thisObj: Any?, property: KProperty<*>): T = value
over 4 years ago · Hanz Gallego Report

0

¡Tuve este problema a pesar de las importaciones! Tomó un poco, pero luego me di cuenta de dónde estaba mi problema: la variable para lo que sea que estés observando debe ser un valor , no una var :

en mi caso fue
var background: Int by currentBackgroundColor.observeAsState(0)

Debería haber sido:
val background: Int by currentBackgroundColor.observeAsState(0)

over 4 years ago · Hanz Gallego Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!