رویداد ناوبری (Navigation Event) کتابخانهای است که یک راهحل چند پلتفرمی کاتلین (KMP) برای ادغام رویدادهای ناوبری سطح سیستم در برنامه شما ارائه میدهد. این کتابخانه به گونهای طراحی شده است که لایه بنیادی برای مدیریت مسیرهای ناوبری در پلتفرمهای مختلف پشتیبانی شده باشد.
مفاهیم کلیدی
سیستم رویداد ناوبری (Navigation Event) حول یک مدل متمرکز dispatcher-handler ساخته شده است که اغلب در سلسله مراتب والد-فرزندی برای نگاشت به ساختارهای پیچیده رابط کاربری، مانند مواردی که در Jetpack Compose یافت میشوند، استفاده میشود.
NavigationEventDispatcher
NavigationEventDispatcher کلاس مرکزی است که مسئولیت مدیریت تمام مصرفکنندگان ثبتشدهی رویدادهای ناوبری ( NavigationEventHandler ) و هماهنگسازی جریان رویدادها را بر عهده دارد.
در یک ساختار سلسله مراتبی، همه توزیعکنندههای درون یک زنجیره، یک NavigationEventProcessor واحد را به اشتراک میگذارند که وضعیت سراسری را مدیریت میکند و یک ترتیب توزیع واحد و یکپارچه را در کل درخت تضمین میکند.
NavigationEventHandler
NavigationEventHandler یک کلاس انتزاعی است که رویدادهای ناوبری ارسال شده توسط NavigationEventDispatcher را دریافت و مدیریت میکند. این کلاس، متدهای فراخوانی را تعریف میکند که مربوط به مراحل مختلف چرخه حیات یک ژست ناوبری هستند، مانند زمانی که یک ژست شروع میشود، پیشرفت میکند، کامل میشود یا لغو میشود.
هندلرها میتوانند به این رویدادها پاسخ دهند تا رابط کاربری یا وضعیت برنامه را در پاسخ به اقدامات ناوبری کاربر بهروزرسانی کنند. چندین هندلر را میتوان در یک توزیعکننده ثبت کرد و بر اساس اولویت و ترتیب ثبت، فراخوانی کرد.
NavigationEvent
NavigationEvent یک کلاس داده است که جزئیات ژست ناوبری را در خود جای میدهد.
NavigationEventInfo
NavigationEventInfo یک کلاس انتزاعی است که اطلاعات زمینهای در مورد وضعیت ناوبری ارائه میدهد.
NavigationEventInput
NavigationEventInput یک کلاس انتزاعی برای کامپوننتهایی است که رویدادهای ناوبری را تولید و ارسال میکنند. این کلاس به عنوان سمت "ورودی" سیستم ناوبری عمل میکند و رویدادهای خاص پلتفرم (مانند حرکات برگشت سیستم یا کلیک دکمهها) را به رویدادهای استاندارد تبدیل میکند که میتوانند به NavigationEventDispatcher ارسال شوند.
مسیرهای ناوبری و محرکهای پشتیبانیشده
سیستم رویداد ناوبری به گونهای طراحی شده است که چیزی بیش از دکمه بازگشت سیستم را در بر بگیرد، و طرحهایی دارد که از چندین جهت ناوبری و روشهای ورودی در پلتفرمهای مختلف پشتیبانی میکنند.
مسیرهای پشتیبانی شده
پلتفرمهای مختلف از مسیرهای ناوبری متفاوتی پشتیبانی میکنند:
پلتفرم | برگشت | بالا | به جلو | خانه |
گوشی اندروید | ✅ | ✅ | 🚫 | ✅ |
تبلت اندرویدی | ✅ | ✅ | 🚫 | ✅ |
وب (مرورگر) | ✅ | ✅ | ✅ | 🚫 |
آیاواس (آیفون/آیپد) | ✅ | 🚫 | ✅ | ✅ |
تریگرهای پشتیبانی شده
مدیریت ورودی از طریق مکانیسمهای مختلفی در هر پلتفرم انجام میشود:
ماشه | گوشی اندروید | وب (مرورگر) | آیاواس (آیفون/آیپد) |
دکمه برگشت کیبورد | ✅ برگشت | ❓ | ✅ برگشت |
دکمه بازگشت نرمافزار | 🚫 | ✅ برگشت | ✅ برگشت |
دکمه بالا آمدن نرمافزار | ✅ بالا | 🚫 | 🚫 |
اشاره از چپ | ✅ برگشت | ❓ | ✅ برگشت |
اشاره از راست | ✅ برگشت | ❓ | ✅ فوروارد |
ژست از پایین | ✅ خانه | 🚫 | ✅ خانه |