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) |
Кнопка «Назад» на клавиатуре | ✅ Назад | ❓ | ✅ Назад |
Кнопка «Назад» в программном обеспечении | 🚫 | ✅ Назад | ✅ Назад |
Кнопка «Программное обеспечение» | ✅ Вверх | 🚫 | 🚫 |
Жест слева | ✅ Назад | ❓ | ✅ Назад |
Жест справа | ✅ Назад | ❓ | ✅ Вперед |
Жест снизу | ✅ Главная | 🚫 | ✅ Главная |