Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

316
Visualizações
¿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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda