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

312
Vistas
¿Cómo hacer Inyección Asistida con Composición de Navegación?

Tengo un componente llamado ParentScreen y un ViewModel llamado ParentViewModel . Dentro de ParentViewModel , estoy recopilando un valor de mi repositorio.

 class MyRepo @Inject constructor() { fun getParentData() = System.currentTimeMillis().toString() // some dummy value } @HiltViewModel class ParentViewModel @Inject constructor( myRepo: MyRepo ) : ViewModel() { private val _parentData = MutableStateFlow("") val parentData = _parentData.asStateFlow() init { val realData = myRepo.getParentData() _parentData.value = realData } } @Composable fun ParentScreen( parentViewModel: ParentViewModel = hiltViewModel() ) { val parentData by parentViewModel.parentData.collectAsState() ChildWidget(parentData = parentData) }

Dentro de la composición de ParentScreen , tengo una composición de ChildWidget y tiene su propio ViewModel llamado ChildViewModel .

 @HiltViewModel class ChildViewModel @AssistedInject constructor( @Assisted val parentData: String ) : ViewModel() { @AssistedFactory interface ChildViewModelFactory { fun create(parentData: String): ChildViewModel } init { Timber.d("Child says data is $parentData ") } } @Composable fun ChildWidget( parentData: String, childViewModel: ChildViewModel = hiltViewModel() // How do I supply assisted injection factory here? ) { // Code omitted }

Ahora, quiero obtener parentData dentro del constructor de ChildViewModel .

Preguntas

  • ¿Cómo proporciono ChildViewModelFactory al método hiltViewModel de Navigation Compose?
  • Si eso no es posible, ¿cuál sería el método más adecuado para inyectar un objeto del componible principal al ViewModel del componible secundario? ¿Qué tal crear una propiedad lateinit y un método init como se muestra a continuación?
 @HiltViewModel class ChildViewModel @Inject constructor( ) : ViewModel() { lateinit var parentData: Long fun init(parentData: Long){ if(this::parentData.isInitialized) return this.parentData = parentData } }
over 4 years ago · Santiago Trujillo
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