Самое интересное из нового: поддержка Shared Elements между экранами. Теперь достаточно обернуть
NavDisplay в SharedTransitionLayout и передать scope:SharedTransitionLayout {
NavDisplay(
backStack = backStack,
sharedTransitionScope = this
)
}Второе большое добавление —
SceneDecoratorStrategy. Отдельный интерфейс для декорирования сцен общими UI-элементами или для шаринга состояния между ними. Логика декорирования теперь отделена от логики выбора сцены в SceneStrategy.Type safe metadata DSL через
MetadataKey. Больше не нужны строковые ключи — типы значений описаны статически. Готовые NavMetadataKey позволяют задавать анимации переходов прямо в entryProvider:entry<ScreenC>(
metadata = metadata {
put(NavDisplay.TransitionKey) {
slideInVertically { it } togetherWith fadeOut()
}
}
) { ... }
#compose #navigation3 #jetpack