Я пытался использовать API-интерфейс NavController addOnDestinationChangedListener, но он отправляется немедленно моему слушателю и не ждет завершения композиции.
Код: Выделить всё
val navController = rememberNavController()
// Register the destination changed listener
navController.addOnDestinationChangedListener { _, destination, _ ->
// destination change is sent immediately and isnt waiting for the composable to finish
}
что-то вроде этого:
Моя цель — добавить прослушиватель, который запускается только после завершения композиции и изменения места назначения.
что-то вроде этого:
p>
Код: Выделить всё
// Register the transition finished listener
navController.transitionFinished{ _, destination ->
// Do something when the navigation transition has finished
}
NavHost(navController = navController, startDestination = "Home") {
composable("Home") {
// THE CALLBACK IS FIRED HERE, IMMEDITIETLY
Text("FIRST SITE")
//FIRE NOW THE CALLBACK AFTER IT FINISHED COMPOSITION
}
composable("Settings") {
// THE CALLBACK IS FIRED HERE, IMMEDITIETLY
Text("SECOND SITE")
//FIRE NOW THE CALLBACK AFTER IT FINISHED COMPOSITION
}
}
Есть ли варианты, чтобы получить текущее состояние перехода navHost, чтобы Я могу реализовать это сам или использовать любые другие вызовы API?
EDIT1: TO Уточнить: я определяю завершающую композицию, когда вся анимация перехода завершена
Подробнее здесь: https://stackoverflow.com/questions/748 ... transition