নেভিগেশন

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

Android Jetpack-এর নেভিগেশন কম্পোনেন্টে নেভিগেশন লাইব্রেরি, Safe Args Gradle প্লাগ-ইন এবং অ্যাপ নেভিগেশন প্রয়োগ করতে সাহায্য করার জন্য টুলিং অন্তর্ভুক্ত থাকে। নেভিগেশন কম্পোনেন্ট সহজ বোতাম ক্লিক থেকে শুরু করে আরও জটিল প্যাটার্ন, যেমন অ্যাপ বার এবং নেভিগেশন ড্রয়ারের মতো বিভিন্ন নেভিগেশন ব্যবহারের কেস হ্যান্ডেল করে।

মূল ধারণা

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

ধারণা

উদ্দেশ্য

ধরন

হোস্ট

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

গ্রাফ

একটি ডেটা স্ট্রাকচার যা অ্যাপের মধ্যে সমস্ত নেভিগেশন গন্তব্য এবং সেগুলি কীভাবে একসাথে কানেক্ট হয় তা নির্ধারণ করে।

NavGraph

কন্ট্রোলার

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

NavController

গন্তব্য

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

NavDestination

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

রুট

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

আপনি রুট ব্যবহার করে নেভিগেট করতে পারবেন। রুট আপনাকে গন্তব্যে নিয়ে যায়।

যেকোনও সিরিয়ালাইজ করা যায় এমন ডেটার ধরন।

সুবিধা ও ফিচার

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

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

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

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

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

Views থেকে Compose-এ মাইগ্রেট করা অ্যাপ্লিকেশনের ক্ষেত্রে, সাজেস্ট করা স্ট্র্যাটেজি হল আলাদা আলাদা স্ক্রিন Compose-এ কনভার্ট করার সময় ফ্র্যাগমেন্ট-ভিত্তিক নেভিগেশন কম্পোনেন্ট ব্যবহার করা চালিয়ে যাওয়া। সব ফ্র্যাগমেন্ট কম্পোজেবল দিয়ে পরিবর্তন করা হয়ে গেলে, আপনি নেভিগেশন গ্রাফকে নেভিগেশন কম্পোজে মাইগ্রেট করতে পারবেন।

আপনার পরিবেশ সেট-আপ করুন

আপনার প্রোজেক্টে নেভিগেশন সাপোর্ট অন্তর্ভুক্ত করতে, আপনার অ্যাপের 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.10.2"

  // 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.10.2"

  // 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 প্রয়োগ করতে হয়, সেই সম্পর্কে আরও তথ্য পেতে, পাশাপাশি, Compose ও অন্যান্য UI ফ্রেমওয়ার্কের সাথে সেগুলি কীভাবে ইন্টার‍্যাক্ট করে সেই সম্পর্কে বিস্তারিত জানতে, নিচে উল্লেখ করা গাইড দেখুন:

কোডল্যাবস

ভিডিও

নমুনা