Navigation Event to biblioteka, która udostępnia rozwiązanie Kotlin Multiplatform (KMP) do integrowania zdarzeń nawigacji na poziomie systemu z aplikacją. Jest to warstwa podstawowa do obsługi wskazówek nawigacyjnych na różnych obsługiwanych platformach.
Kluczowych pojęć
System zdarzeń nawigacyjnych jest oparty na scentralizowanym modelu dyspozytor-obsługa, który jest często używany w hierarchii nadrzędny-podrzędny do mapowania złożonych struktur interfejsu, takich jak te w Jetpack Compose.
NavigationEventDispatcher
Klasa NavigationEventDispatcher jest centralną klasą odpowiedzialną za zarządzanie wszystkimi zarejestrowanymi odbiorcami zdarzeń nawigacyjnych (NavigationEventHandler) i koordynowanie przepływu zdarzeń.
W konfiguracji hierarchicznej wszyscy dyspozytorzy w tym samym łańcuchu mają jeden obiekt NavigationEventProcessor, który zarządza stanem globalnym i zapewnia jeden ujednolicony porządek wysyłania w całym drzewie.
NavigationEventHandler
NavigationEventHandler to klasa abstrakcyjna, która odbiera i obsługuje zdarzenia nawigacji wysyłane przez NavigationEventDispatcher. Definiuje metody wywołania zwrotnego, które odpowiadają różnym etapom cyklu życia gestu nawigacji, np. gdy gest się rozpoczyna, postępuje, kończy lub jest anulowany.
Moduły obsługi mogą reagować na te zdarzenia, aby aktualizować interfejs lub stan aplikacji w odpowiedzi na działania użytkownika związane z nawigacją. W dispatcherze można zarejestrować wiele modułów obsługi, które są wywoływane na podstawie priorytetu i kolejności rejestracji.
NavigationEvent
NavigationEvent to klasa danych, która zawiera szczegóły gestu nawigacyjnego.
NavigationEventInfo
NavigationEventInfo to klasa abstrakcyjna, która zawiera kontekstowe informacje o stanie nawigacji.
NavigationEventInput
NavigationEventInput to klasa abstrakcyjna komponentów, które generują i wysyłają zdarzenia nawigacji. Jest to „wejście” systemu nawigacji, które tłumaczy zdarzenia specyficzne dla platformy (takie jak gesty cofania w systemie czy kliknięcia przycisków) na standardowe zdarzenia, które można wysyłać do NavigationEventDispatcher.
Obsługiwane wskazówki nawigacyjne i aktywatory
System zdarzeń nawigacji został zaprojektowany tak, aby obejmował nie tylko systemowy przycisk Wstecz. Obsługuje on wiele kierunków nawigacji i metod wprowadzania danych na różnych platformach.
Obsługiwane kierunki
Różne platformy obsługują różne kierunki nawigacji:
Platforma |
Wstecz |
W górę |
Przekaż dalej |
Strona główna |
Telefon z Androidem |
✅ |
✅ |
🚫 |
✅ |
Tablet z Androidem |
✅ |
✅ |
🚫 |
✅ |
Sieć (przeglądarka) |
✅ |
✅ |
✅ |
🚫 |
iOS (iPhone/iPad) |
✅ |
🚫 |
✅ |
✅ |
Obsługiwane wyzwalacze
Obsługa danych wejściowych jest realizowana za pomocą różnych mechanizmów na każdej platformie:
Wyzwalacz |
Telefon z Androidem |
Sieć (przeglądarka) |
iOS (iPhone/iPad) |
Przycisk Wstecz na klawiaturze |
✅ Wstecz |
❓ |
✅ Wstecz |
Przycisk Wstecz w oprogramowaniu |
🚫 |
✅ Wstecz |
✅ Wstecz |
Przycisk oprogramowania w górę |
✅ Wzrost |
🚫 |
🚫 |
Gest od lewej |
✅ Wstecz |
❓ |
✅ Wstecz |
Gest od prawej |
✅ Wstecz |
❓ |
✅ Przekaż dalej |
Gest od dołu |
✅ Strona główna |
🚫 |
✅ Strona główna |