নেভিগেশন ইভেন্ট হলো একটি লাইব্রেরি যা আপনার অ্যাপ্লিকেশনে সিস্টেম-স্তরের নেভিগেশন ইভেন্টগুলিকে একীভূত করার জন্য একটি কোটলিন মাল্টিপ্ল্যাটফর্ম (কেএমপি) সমাধান প্রদান করে। এটি বিভিন্ন সমর্থিত প্ল্যাটফর্ম জুড়ে নেভিগেশন দিকনির্দেশনা পরিচালনার জন্য ভিত্তিস্তর হিসেবে ডিজাইন করা হয়েছে।
মূল ধারণা
ন্যাভিগেশন ইভেন্ট সিস্টেমটি একটি কেন্দ্রীভূত ডিসপ্যাচার-হ্যান্ডলার মডেলের উপর ভিত্তি করে নির্মিত, যা প্রায়শই জেটপ্যাক কম্পোজের মতো জটিল UI কাঠামোর সাথে ম্যাপ করার জন্য প্যারেন্ট-চাইল্ড হায়ারার্কিতে ব্যবহৃত হয়।
NavigationEventDispatcher
NavigationEventDispatcher হলো কেন্দ্রীয় ক্লাস, যা সমস্ত নিবন্ধিত নেভিগেশন ইভেন্ট কনজিউমার ( NavigationEventHandler ) পরিচালনা এবং ইভেন্টের প্রবাহ সমন্বয় করার জন্য দায়ী।
In a hierarchical setup, all dispatchers within the same chain share a single NavigationEventProcessor , which manages the global state and ensures a single, unified dispatching order across the entire tree.
NavigationEventHandler
NavigationEventHandler হলো একটি অ্যাবস্ট্রাক্ট ক্লাস যা NavigationEventDispatcher দ্বারা প্রেরিত ন্যাভিগেশন ইভেন্টগুলো গ্রহণ ও পরিচালনা করে। এটি এমন কলব্যাক মেথড সংজ্ঞায়িত করে যা একটি ন্যাভিগেশন জেসচার লাইফসাইকেলের বিভিন্ন পর্যায়ের সাথে সঙ্গতিপূর্ণ, যেমন যখন একটি জেসচার শুরু হয়, অগ্রসর হয়, সম্পন্ন হয় বা বাতিল করা হয়।
ব্যবহারকারীর নেভিগেশন কার্যক্রমের প্রতিক্রিয়ায় UI বা অ্যাপ্লিকেশনের অবস্থা আপডেট করার জন্য হ্যান্ডলাররা এই ইভেন্টগুলোতে সাড়া দিতে পারে। একটি ডিসপ্যাচারের সাথে একাধিক হ্যান্ডলার রেজিস্টার করা যায় এবং অগ্রাধিকার ও রেজিস্ট্রেশনের ক্রম অনুসারে সেগুলোকে আহ্বান করা হয়।
NavigationEvent
NavigationEvent হলো একটি ডেটা ক্লাস যা নেভিগেশন জেসচারের বিবরণ বহন করে।
NavigationEventInfo
NavigationEventInfo হলো একটি অ্যাবস্ট্রাক্ট ক্লাস যা একটি নেভিগেশন অবস্থা সম্পর্কে প্রাসঙ্গিক তথ্য প্রদান করে।
NavigationEventInput
NavigationEventInput হলো সেইসব কম্পোনেন্টের জন্য একটি অ্যাবস্ট্রাক্ট ক্লাস, যারা নেভিগেশন ইভেন্ট তৈরি ও প্রেরণ করে। এটি নেভিগেশন সিস্টেমের "ইনপুট" অংশ হিসেবে কাজ করে, যা প্ল্যাটফর্ম-নির্দিষ্ট ইভেন্টগুলোকে (যেমন সিস্টেম ব্যাক জেসচার বা বাটন ক্লিক) এমন প্রমিত ইভেন্টে রূপান্তরিত করে, যা একটি NavigationEventDispatcher এ পাঠানো যায়।
সমর্থিত নেভিগেশন দিকনির্দেশনা এবং ট্রিগার
নেভিগেশন ইভেন্ট সিস্টেমটি শুধু সিস্টেমের ব্যাক বাটনের মধ্যেই সীমাবদ্ধ না থেকে, বিভিন্ন প্ল্যাটফর্মে একাধিক নেভিগেশন দিকনির্দেশনা এবং ইনপুট পদ্ধতি সমর্থন করার জন্য ডিজাইন করা হয়েছে।
সমর্থিত নির্দেশাবলী
বিভিন্ন প্ল্যাটফর্ম বিভিন্ন নেভিগেশন দিকনির্দেশনা সমর্থন করে:
প্ল্যাটফর্ম | ফিরে যান | উপরে | ফরোয়ার্ড | হোম |
অ্যান্ড্রয়েড ফোন | ✅ | ✅ | 🚫 | ✅ |
অ্যান্ড্রয়েড ট্যাবলেট | ✅ | ✅ | 🚫 | ✅ |
ওয়েব (ব্রাউজার) | ✅ | ✅ | ✅ | 🚫 |
iOS (iPhone/iPad) | ✅ | 🚫 | ✅ | ✅ |
সমর্থিত ট্রিগার
প্রতিটি প্ল্যাটফর্মে বিভিন্ন পদ্ধতির মাধ্যমে ইনপুট গ্রহণ করা হয়:
ট্রিগার | অ্যান্ড্রয়েড ফোন | ওয়েব (ব্রাউজার) | iOS (iPhone/iPad) |
কিবোর্ডের ব্যাক বাটন | ✅ ফিরে যান | ❓ | ✅ ফিরে যান |
সফটওয়্যার ব্যাক বাটন | 🚫 | ✅ ফিরে যান | ✅ ফিরে যান |
সফটওয়্যার আপ বাটন | ✅ উপরে | 🚫 | 🚫 |
বাম দিক থেকে অঙ্গভঙ্গি | ✅ ফিরে যান | ❓ | ✅ ফিরে যান |
ডান দিক থেকে অঙ্গভঙ্গি | ✅ ফিরে যান | ❓ | ✅ ফরোয়ার্ড |
নিচ থেকে অঙ্গভঙ্গি | ✅ হোম | 🚫 | ✅ হোম |