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

499
Vistas
¿Cómo puedo cambiar el valor en el valor de TextField desde viewModel en jetpack compose?

Estoy usando jetpack compose en mi proyecto y no sé cómo cambiar el valor de 'TextFile' de viewmodel.

en mi actividad:

 ... @Composable fun myview(){ var dname = remember { mutableStateOf(TextFieldValue("")) } TextField(value = dname.value, onValueChange = { dname.value = it }, modifier =Modifier.fillMaxWidth() ) } ...

en mi modelo de vista:

 ... var dname = MutableStateFlow("") ...

Quiero llamar a dname.value="test" en viewmodel y cambiar el valor que se muestra en TextField

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Suponiendo que tiene una referencia a su viewModel llamada viewModel , solo tiene que llamar a viewModel.name.collectAsState() . Pero más allá de eso, sugiero mantener la lógica de datos en ViewModel, haciendo que MutableStateFlow sea privado y exponiendo un StateFlow inmutable y un método setter al componible.

 // ViewModel private val _name = MutableStateFlow("") val name = _name.asStateFlow() fun setName(name: String) { _name.value = name }
 // Composable val name = viewModel.name.collectAsState() TextField( value = name, onValueChange = viewModel::setName )

Como puede ver, no estoy usando remember { mutableStateOf(...) } aquí, porque StateFlow en ViewModel es la única fuente de verdad.

Su enfoque de establecer el valor componible de forma imperativa no tiene sentido en la API declarativa que proporciona Jetpack Compose.

Intente leer sobre la interfaz de usuario declarativa/imperativa y el estado en la composición de Jetpack, así como en el flujo de Kotlin para obtener más información.

over 4 years ago · Santiago Trujillo Denunciar

0

También puede usar mutableStateOf en lugar de MutableStateFlow . Creo que es mucho más simple.

Ver modelo

 var dname by mutableStateOf("init value")

componible

 TextField( value = viewModel.dname, onValueChange = { viewModel.dname = it } )

En ViewModel , cuando desee cambiar el valor, puede llamar a dname = "test"

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