Событие навигации

Navigation Event — это библиотека, предоставляющая решение Kotlin Multiplatform (KMP) для интеграции системных событий навигации в ваше приложение. Она разработана как базовый слой для обработки навигационных указаний на различных поддерживаемых платформах .

Ключевые понятия

Система событий навигации построена на основе централизованной модели диспетчер-обработчик, часто используемой в иерархии «родитель-потомок» для сопоставления со сложными структурами пользовательского интерфейса, такими как те, что используются в Jetpack Compose.

Класс NavigationEventDispatcher является центральным классом, отвечающим за управление всеми зарегистрированными потребителями навигационных событий ( NavigationEventHandler ) и координацию потока событий.

В иерархической структуре все диспетчеры в одной цепочке используют один и тот же NavigationEventProcessor , который управляет глобальным состоянием и обеспечивает единый, унифицированный порядок диспетчеризации по всему дереву.

NavigationEventHandler — это абстрактный класс, который получает и обрабатывает события навигации, отправляемые NavigationEventDispatcher . Он определяет методы обратного вызова, соответствующие различным этапам жизненного цикла навигационного жеста, например, когда жест начинается, продолжается, завершается или отменяется.

Обработчики могут реагировать на эти события, обновляя состояние пользовательского интерфейса или приложения в ответ на действия пользователя при навигации. К диспетчеру можно зарегистрировать несколько обработчиков, которые вызываются в зависимости от приоритета и порядка регистрации.

NavigationEvent — это класс данных, который хранит подробную информацию о жесте навигации.

NavigationEventInfo — это абстрактный класс, предоставляющий контекстную информацию о состоянии навигации.

NavigationEventInput — это абстрактный класс для компонентов, которые генерируют и обрабатывают события навигации. Он выступает в качестве «входной» стороны системы навигации, преобразуя специфичные для платформы события (например, жесты возврата назад или нажатия кнопок) в стандартизированные события, которые могут быть отправлены в NavigationEventDispatcher .

Поддерживаемые направления навигации и триггеры

Система навигационных событий разработана таким образом, чтобы охватывать не только кнопку «Назад», но и поддерживать несколько направлений навигации и методов ввода на разных платформах.

Поддерживаемые направления

Различные платформы поддерживают разные направления навигации:

Платформа

Назад

Вверх

Вперед

Дом

телефон на Android

🚫

Планшет на Android

🚫

Веб (браузер)

🚫

iOS (iPhone/iPad)

🚫

Поддерживаемые триггеры

Обработка входных данных осуществляется с помощью различных механизмов на каждой платформе:

Курок

Телефон на Android

Веб (браузер)

iOS (iPhone/iPad)

Кнопка «Назад» на клавиатуре

✅ Назад

✅ Назад

Кнопка «Назад» в программном обеспечении

🚫

✅ Назад

✅ Назад

Кнопка «Программное обеспечение»

✅ Вверх

🚫

🚫

Жест слева

✅ Назад

✅ Назад

Жест справа

✅ Назад

✅ Вперед

Жест снизу

✅ Главная

🚫

✅ Главная