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

88
Vistas
Componible en NavGraphBuilder se repite 3 o más veces

Tengo un problema cuando hago una llamada a mi componible en el NavGraph , se repite 3 veces o, a veces, más veces. He mirado donde hago la llamada y no veo ningún bucle o algo.

NavGraph

 fun NavGraphBuilder.addScheduleDetails( navController: NavHostController, userDataViewModel: UserDataViewModel, titulos: MutableState<String>, datosViewModel: DatosViewModel, ){ val animationState = mutableStateOf(true) composable(route = MainDestinations.SCHEDULE_DETAILS_ROUTE+"/{${NavArguments.NOMBRE_HORARIO}}") {backStackEntry -> Log.w("Call", "ScheduleDetails") titulos.value = backStackEntry.arguments?.getString(NavArguments.NOMBRE_HORARIO)!!+" " val actions = MainActions(navController = navController) DetallesHorarioScreen( nombreHorario = backStackEntry.arguments?.getString(NavArguments.NOMBRE_HORARIO), userDataViewModel = userDataViewModel, onNavToAddSubject = actions.navigateToAgregarMateria, datosViewModel = datosViewModel, animationState = animationState ) } }

Impresiones desde LOG

 2022-01-06 19:57:01.548 30533-30533/horarios W/Call: ScheduleDetails 2022-01-06 19:57:01.613 30533-30533/horarios W/Call: ScheduleDetails 2022-01-06 19:57:01.987 30533-30533/horarios W/Call: ScheduleDetails

Llamar a composable(route = MainDestinations.SCHEDULE_DETAILS_ROUTE ...)

 Card( modifier = Modifier .fillMaxWidth() .height(80.dp) .padding(10.dp) .clickable { onNavToHorario(nombre) }, //Call to navigator border = BorderStroke(width = 1.dp, color = primaryColorCustom), shape = RoundedCornerShape(10), backgroundColor = Color.White, elevation = 4.dp ) {...}

onNavToHorario()

 val actions = MainActions(navController = navController) (...) onNavToHorario = actions.navigateToHorario

MainActions()

 class MainActions(navController: NavHostController){ val navigateToHorario:(String) -> Unit = {nomHorario: String -> navController.navigate(route = MainDestinations.SCHEDULE_DETAILS_ROUTE+"/${nomHorario}") } }

En otro caso, tuve un problema similar y me ocasionó animaciones, pero ya eliminé todas las animaciones en NavGraph pero el problema sigue siendo

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

0

La navegación siempre cruza los destinos, por lo que cada pantalla siempre se recompondrá varias veces. Esto se espera según la guía Thinking in Compose :

En algunos casos, se puede ejecutar una función componible para cada fotograma de una animación de interfaz de usuario. Si la función realiza operaciones costosas, como leer desde el almacenamiento del dispositivo, la función puede provocar un bloqueo de la interfaz de usuario.

No está haciendo nada malo (no está provocando efectos secundarios como parte de la composición), por lo que su código ya está bien.

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