Создание навигации не применяет анимацию enterTransitionAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Создание навигации не применяет анимацию enterTransition

Сообщение Anonymous »

Я использую 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»