নেভিগেশন

নেভিগেশন বলতে সেইসব মিথস্ক্রিয়াকে বোঝায়, যা ব্যবহারকারীদের আপনার অ্যাপের মধ্যে থাকা বিভিন্ন কন্টেন্টের মধ্যে চলাচল করতে, প্রবেশ করতে এবং সেখান থেকে বেরিয়ে আসতে সাহায্য করে।

অ্যান্ড্রয়েড জেটপ্যাকের নেভিগেশন কম্পোনেন্টে নেভিগেশন লাইব্রেরি , সেফ আর্গস গ্রেডল প্লাগ-ইন এবং অ্যাপ নেভিগেশন বাস্তবায়নে সহায়ক টুলিং অন্তর্ভুক্ত রয়েছে। নেভিগেশন কম্পোনেন্টটি সাধারণ বাটন ক্লিক থেকে শুরু করে অ্যাপ বার এবং নেভিগেশন ড্রয়ারের মতো আরও জটিল প্যাটার্ন পর্যন্ত বিভিন্ন ধরনের নেভিগেশন ব্যবহার পরিচালনা করে।

মূল ধারণা

নিম্নলিখিত সারণিতে নেভিগেশনের মূল ধারণা এবং সেগুলি বাস্তবায়নের জন্য ব্যবহৃত প্রধান প্রকারগুলির একটি সংক্ষিপ্ত বিবরণ দেওয়া হয়েছে।

ধারণা

উদ্দেশ্য

প্রকার

হোস্ট

একটি UI উপাদান যা বর্তমান নেভিগেশন গন্তব্য ধারণ করে। অর্থাৎ, যখন একজন ব্যবহারকারী কোনো অ্যাপের মধ্যে নেভিগেট করেন, তখন অ্যাপটি মূলত নেভিগেশন হোস্টের মধ্যে গন্তব্য অদলবদল করতে থাকে।

গ্রাফ

একটি ডেটা স্ট্রাকচার যা অ্যাপের মধ্যেকার সমস্ত নেভিগেশন গন্তব্য এবং সেগুলোর পারস্পরিক সংযোগকে সংজ্ঞায়িত করে।

NavGraph

নিয়ন্ত্রক

গন্তব্যস্থলগুলোর মধ্যে নেভিগেশন পরিচালনার জন্য এটি কেন্দ্রীয় সমন্বয়কারী। এই কন্ট্রোলারটি গন্তব্যস্থলগুলোর মধ্যে নেভিগেট করা, ডিপ লিঙ্ক পরিচালনা, ব্যাক স্ট্যাক ব্যবস্থাপনা এবং আরও অনেক কিছুর জন্য মেথড সরবরাহ করে।

NavController

গন্তব্য

ন্যাভিগেশন গ্রাফের একটি নোড। যখন ব্যবহারকারী এই নোডে ন্যাভিগেট করেন, তখন হোস্ট এর বিষয়বস্তু প্রদর্শন করে।

NavDestination

সাধারণত নেভিগেশন গ্রাফ তৈরি করার সময় এটি বানানো হয়।

রুট

একটি গন্তব্য এবং তার জন্য প্রয়োজনীয় যেকোনো ডেটাকে অনন্যভাবে শনাক্ত করে।

আপনি রুট ব্যবহার করে পথ খুঁজে নিতে পারেন। রুট আপনাকে গন্তব্যে নিয়ে যায়।

যেকোনো সিরিয়ালাইজেবল ডেটা টাইপ।

সুবিধা এবং বৈশিষ্ট্য

নেভিগেশন কম্পোনেন্টটি আরও বেশ কিছু সুবিধা ও বৈশিষ্ট্য প্রদান করে, যার মধ্যে নিম্নলিখিতগুলো অন্তর্ভুক্ত:

  • অ্যানিমেশন ও ট্রানজিশন: অ্যানিমেশন ও ট্রানজিশনের জন্য প্রমিত রিসোর্স সরবরাহ করে।
  • ডিপ লিঙ্কিং: এমন ডিপ লিঙ্ক বাস্তবায়ন ও পরিচালনা করে যা ব্যবহারকারীকে সরাসরি কোনো গন্তব্যে নিয়ে যায়।
  • UI প্যাটার্ন: সামান্য অতিরিক্ত পরিশ্রমে নেভিগেশন ড্রয়ার এবং বটম নেভিগেশনের মতো প্যাটার্ন সমর্থন করে।
  • টাইপ সেফটি: টাইপ সেফটি সহ গন্তব্যস্থলগুলির মধ্যে ডেটা আদান-প্রদানের জন্য সমর্থন অন্তর্ভুক্ত।
  • ViewModel সমর্থন: একটি নেভিগেশন গ্রাফের গন্তব্যস্থলগুলোর মধ্যে UI-সম্পর্কিত ডেটা শেয়ার করার জন্য একটি ViewModel গ্রাফে স্কোপ করার সুবিধা দেয়।
  • ফ্র্যাগমেন্ট ট্রানজ্যাকশন: ফ্র্যাগমেন্ট ট্রানজ্যাকশন সম্পূর্ণরূপে সমর্থন ও পরিচালনা করে।
  • পিছনে ও উপরে: ডিফল্টরূপে পিছনে ও উপরে যাওয়ার কাজগুলো সঠিকভাবে সম্পন্ন করে।

ফ্রেমওয়ার্ক বিকল্পগুলি

আপনার অ্যাপের UI আর্কিটেকচারের উপর নির্ভর করে, নেভিগেশন কম্পোনেন্টটি আপনার নেভিগেশন গ্রাফ বাস্তবায়নের জন্য দুটি প্রধান ফ্রেমওয়ার্ক সমর্থন করে:

  • কম্পোজ : যদি আপনার অ্যাপটি সম্পূর্ণরূপে জেটপ্যাক কম্পোজ দিয়ে তৈরি করা হয়, তাহলে নেভিগেশন কম্পোজ ব্যবহার করুন। আপনার গ্রাফের ডেস্টিনেশনগুলো কম্পোজেবল।
  • ফ্র্যাগমেন্টস : যদি আপনার অ্যাপে ভিউ অথবা ভিউ ও কম্পোজের মিশ্রণ ব্যবহৃত হয়, তাহলে ফ্র্যাগমেন্ট-ভিত্তিক নেভিগেশন কম্পোনেন্টটি ব্যবহার করুন। আপনার গ্রাফের গন্তব্যস্থলগুলো হলো ফ্র্যাগমেন্ট, যেগুলোতে সাধারণ ভিউ, কম্পোজ কন্টেন্ট অথবা উভয়ের সংমিশ্রণ থাকতে পারে।

যেসব অ্যাপ্লিকেশন ভিউ থেকে কম্পোজে স্থানান্তরিত হচ্ছে, তাদের জন্য প্রস্তাবিত কৌশল হলো, স্বতন্ত্র স্ক্রিনগুলোকে কম্পোজে রূপান্তর করার সময়ও ফ্র্যাগমেন্ট-ভিত্তিক নেভিগেশন কম্পোনেন্ট ব্যবহার চালিয়ে যাওয়া। একবার সমস্ত ফ্র্যাগমেন্ট কম্পোজেবল দিয়ে প্রতিস্থাপিত হয়ে গেলে, আপনি নেভিগেশন গ্রাফটিকে নেভিগেশন কম্পোজে স্থানান্তরিত করতে পারেন।

আপনার পরিবেশ তৈরি করুন

আপনার প্রজেক্টে নেভিগেশন সাপোর্ট অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিত ডিপেন্ডেন্সিগুলো যোগ করুন:

গ্রুভি

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21'
}
  
dependencies {
  def nav_version = "2.9.8"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"

  // Views/Fragments Integration
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Feature module support for Fragments
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // JSON serialization library, works with the Kotlin serialization plugin.
  implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3"
}

কোটলিন

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
  val nav_version = "2.9.8"

  // Jetpack Compose integration
  implementation("androidx.navigation:navigation-compose:$nav_version")

  // Views/Fragments integration
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Feature module support for Fragments
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // JSON serialization library, works with the Kotlin serialization plugin
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
}

আপনার প্রোজেক্টে অন্যান্য আর্কিটেকচার কম্পোনেন্ট যোগ করার তথ্যের জন্য, “আপনার প্রোজেক্টে কম্পোনেন্ট যোগ করুন” দেখুন।

পরবর্তী পদক্ষেপ

নেভিগেশন কম্পোনেন্ট সম্পর্কিত আরও ডকুমেন্টেশন এবং রিসোর্সের জন্য, নিম্নলিখিত রিসোর্সগুলো দেখুন।

বিস্তারিত নির্দেশিকা

কীভাবে একটি ন্যাভিগেশন হোস্ট এবং NavController ইমপ্লিমেন্ট করতে হয়, সেইসাথে কম্পোজ এবং অন্যান্য UI ফ্রেমওয়ার্কের সাথে এগুলি কীভাবে কাজ করে তার বিশদ বিবরণের জন্য, নিম্নলিখিত গাইডগুলি দেখুন:

কোডল্যাবস

ভিডিও

নমুনা