Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

278
Vistas
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 · Santiago Trujillo
8 Respuestas
Responde la pregunta

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 · Santiago Trujillo Denunciar

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 · Santiago Trujillo Denunciar

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 · Santiago Trujillo Denunciar

0

Agregar una dependencia solucionó el problema para mí:

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

Gracias a Tayaab Mizhar

over 4 years ago · Santiago Trujillo Denunciar

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 jetpack compose, 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 · Santiago Trujillo Denunciar

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 · Santiago Trujillo Denunciar

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 · Santiago Trujillo Denunciar

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 · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda