Navigation Event – это библиотека, которая предоставляет решение Kotlin Multiplatform (KMP) для интеграции событий навигации на уровне системы в ваше приложение. Он предназначен для работы с навигационными указаниями на разных поддерживаемых платформах.
Основные понятия
Система событий навигации построена на основе централизованной модели диспетчера-обработчика, которая часто используется в иерархии родительских и дочерних элементов для сопоставления со сложными структурами интерфейса, например в Jetpack Compose.
NavigationEventDispatcher
Класс NavigationEventDispatcher является центральным и отвечает за управление всеми зарегистрированными потребителями событий навигации (NavigationEventHandler) и организацию потока событий.
В иерархической структуре все диспетчеры в одной цепочке используют один объект NavigationEventProcessor, который управляет глобальным состоянием и обеспечивает единый порядок отправки для всего дерева.
NavigationEventHandler
NavigationEventHandler – это абстрактный класс, который получает и обрабатывает события навигации, отправленные NavigationEventDispatcher. Он определяет методы обратного вызова, которые соответствуют разным этапам жизненного цикла жеста навигации, например когда жест начинается, выполняется, завершается или отменяется.
Обработчики могут реагировать на эти события, чтобы обновлять интерфейс или состояние приложения в ответ на действия пользователя. В диспетчере можно зарегистрировать несколько обработчиков, которые вызываются в зависимости от приоритета и порядка регистрации.
NavigationEvent
NavigationEvent – это класс данных, содержащий сведения о жесте навигации.
NavigationEventInfo
NavigationEventInfo – это абстрактный класс, который предоставляет контекстную информацию о состоянии навигации.
NavigationEventInput
NavigationEventInput – это абстрактный класс для компонентов, которые генерируют и отправляют события навигации. Он выступает в качестве "входной" стороны системы навигации, преобразуя события, характерные для платформы (например, системные жесты "Назад" или нажатия кнопок), в стандартизированные события, которые можно отправлять в NavigationEventDispatcher.
Поддерживаемые навигационные маршруты и триггеры
Система событий навигации предназначена не только для системной кнопки "Назад". Она поддерживает разные направления навигации и способы ввода на разных платформах.
Поддерживаемые направления
На разных платформах поддерживаются разные направления навигации:
Платформа |
Назад |
Вверх |
Переслать |
Главная |
Телефоны Android |
✅ |
✅ |
🚫 |
✅ |
Планшет Android |
✅ |
✅ |
🚫 |
✅ |
Сайт (браузер) |
✅ |
✅ |
✅ |
🚫 |
iOS (iPhone/iPad) |
✅ |
🚫 |
✅ |
✅ |
Поддерживаемые триггеры
Обработка ввода на каждой платформе осуществляется с помощью различных механизмов:
Триггер |
Телефоны Android |
Сайт (браузер) |
iOS (iPhone/iPad) |
Кнопка "Назад" на клавиатуре |
✅ Назад |
❓ |
✅ Назад |
Программная кнопка "Назад" |
🚫 |
✅ Назад |
✅ Назад |
Кнопка "Обновить ПО" |
✅ Вверх |
🚫 |
🚫 |
Жест слева |
✅ Назад |
❓ |
✅ Назад |
Жест справа |
✅ Назад |
❓ |
✅ Пересылка |
Жест снизу |
✅ Главная |
🚫 |
✅ Главная |