Я использую EnterTransition Jetpack Compose для анимации навигации между экранами. Переход отлично работает в authGraph (вы можете найти его структуру на homeGraph ниже. Она такая же), но он не применяется при переходе к ChatScreen в homeGraph. Почему EnterTransition не применяется к ChatScreen в homeGraph?
Я попробовал, чтобы EnterTransition работал для других экранов в другом графике. Обычно существует несколько способов вызвать ChatRoute с аргументами, но я пытался удалить все аргументы, если проблема связана с сериализацией, но все равно не помогло. Удален текущий переход, чтобы просто использовать FadeIn(), но это не сработало.
NavHost, который управляет несколькими графиками:
@Composable
fun AppNavHost(appState: MedicineAIAppState, startDestination: String) {
val navController = appState.navController
NavHost(
navController = navController,
startDestination = startDestination.toKClassRoute(),
) {
onboardingGraph(navController)
authGraph(navController)
homeGraph(navController)
}
}
HomeGraph включает ChatScreen — экран, на котором переход не работает. Также AuthGraph имеет такую же структуру и там работает та же навигация.
@Serializable data object HomeGraph
fun NavGraphBuilder.homeGraph(navController: NavHostController) {
navigation(startDestination = HomeRoute) {
homeScreen(onStartChatClick = navController::navigateToChatWithoutInbox)
inboxScreen(
onNewChatClick = navController::navigateToChatWithEmpty,
onChatClick = navController::navigateToChatWithInboxAndTopic
)
chatScreen(
onBackClick = navController::popBackStack,
onChatCleared = navController::navigateToInbox
)
profileScreen()
}
}
Это определение ChatScreen с EnterTransition:
fun NavGraphBuilder.chatScreen(
onBackClick: () -> Unit,
onChatCleared: () -> Unit
) {
composable(
enterTransition = {
fadeIn(
animationSpec = tween(300, easing = LinearEasing)
) + slideIntoContainer(
animationSpec = tween(300, easing = EaseIn),
towards = AnimatedContentTransitionScope.SlideDirection.Start
)
},
) {
ChatScreen(
onBackClick = onBackClick,
onChatCleared = onChatCleared
)
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... -animation