Safe Args

Safe Args Gradle প্লাগ-ইন ব্যবহার করে এক গন্তব্য থেকে অন্য গন্তব্যে নেভিগেট করার পদ্ধতি সাজেস্ট করা হয়। এই প্লাগ-ইন অবজেক্ট এবং বিল্ডার ক্লাস তৈরি করে যা গন্তব্যের মধ্যে টাইপ-নিরাপদ নেভিগেশন সক্ষম করে। নেভিগেট করা এবং ডেস্টিনেশনের মধ্যে ডেটা পাস করার জন্য Safe Args ব্যবহার করুন।

Safe Args চালু করুন

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

গ্রুভি

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.10.2"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

কোটলিন

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.10.2"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    }
}

আপনাকে উপলব্ধ দুটি প্লাগইনের মধ্যে একটি অবশ্যই প্রয়োগ করতে হবে।

জাভা অথবা জাভা ও কোটলিনের মিশ্র মডিউলের জন্য উপযুক্ত জাভা ল্যাঙ্গুয়েজ কোড তৈরি করতে, আপনার অ্যাপ বা মডিউলের build.gradle ফাইলে এই লাইনটি যোগ করুন:

গ্রুভি

plugins {
  id 'androidx.navigation.safeargs'
}

কোটলিন

plugins {
    id("androidx.navigation.safeargs")
}

বিকল্পভাবে, শুধুমাত্র কোটলিন মডিউলের জন্য উপযুক্ত কোটলিন কোড তৈরি করতে যোগ করুন:

গ্রুভি

plugins {
  id 'androidx.navigation.safeargs.kotlin'
}

কোটলিন

plugins {
    id("androidx.navigation.safeargs.kotlin")
}

AndroidX-এ মাইগ্রেট করার নির্দেশনা অনুযায়ী, আপনার gradle.properties ফাইলে android.useAndroidX=true অবশ্যই থাকতে হবে।

জেনারেট করা কোড

Safe Args চালু করার পরে, আপনার জেনারেট করা কোডে আপনার সংজ্ঞায়িত প্রতিটি অ্যাকশনের জন্য ক্লাস এবং পদ্ধতি রয়েছে, পাশাপাশি প্রতিটি পাঠানো এবং গ্রহণ করার গন্তব্যের সাথে সম্পর্কিত ক্লাস রয়েছে।

Safe Args প্রতিটি গন্তব্যের জন্য একটি ক্লাস তৈরি করে যেখানে একটি অ্যাকশন শুরু হয়। তৈরি করা ক্লাস নেমে, উৎপত্তিগত গন্তব্য ক্লাস নেমে "দিকনির্দেশ" যোগ করা হয়। যেমন, সোর্স ডেস্টিনেশনের নাম SpecifyAmountFragment হলে, জেনারেট করা ক্লাসের নাম হবে SpecifyAmountFragmentDirections।

জেনারেট করা ক্লাসে প্রতিটি অ্যাকশনের জন্য একটি স্ট্যাটিক পদ্ধতি থাকে যা উৎপত্তি গন্তব্যে সংজ্ঞায়িত করা হয়। এই পদ্ধতিটি আর্গুমেন্ট হিসেবে যেকোনও নির্দিষ্ট অ্যাকশন প্যারামিটার নেয় এবং একটি NavDirections অবজেক্ট রিটার্ন করে যা আপনি সরাসরি navigate()-এ পাস করতে পারবেন।

Safe Args-এর উদাহরণ

যেমন, একটি নেভিগেশন গ্রাফের কথা ভাবুন যেখানে একটি অ্যাকশন দুটি গন্তব্যকে কানেক্ট করে, SpecifyAmountFragment এবং ConfirmationFragment। ConfirmationFragment একটি মাত্র float প্যারামিটার নেয় যা আপনি অ্যাকশনের অংশ হিসেবে প্রদান করেন।

Safe Args একটি SpecifyAmountFragmentDirections ক্লাস তৈরি করে যার মধ্যে একটি মেথড, actionSpecifyAmountFragmentToConfirmationFragment() এবং একটি ইনার ক্লাস থাকে, যাকে ActionSpecifyAmountFragmentToConfirmationFragment বলা হয়। ইনার ক্লাসটি NavDirections থেকে নেওয়া হয়েছে এবং এটি সংশ্লিষ্ট অ্যাকশন আইডি ও float প্যারামিটার স্টোর করে। ফেরত আসা NavDirections অবজেক্টটি তারপর সরাসরি navigate()-এ পাস করা যেতে পারে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

Kotlin

override fun onClick(v: View) {
    val amount: Float = ...
    val action =
        SpecifyAmountFragmentDirections
            .actionSpecifyAmountFragmentToConfirmationFragment(amount)
    v.findNavController().navigate(action)
}

জাভা

@Override
public void onClick(View view) {
    float amount = ...;
    action =
        SpecifyAmountFragmentDirections
            .actionSpecifyAmountFragmentToConfirmationFragment(amount);
    Navigation.findNavController(view).navigate(action);
}

Safe Args-এর মাধ্যমে ডেস্টিনেশনের মধ্যে ডেটা পাস করার ব্যাপারে আরও জানতে, টাইপ নিরাপত্তা সহ ডেটা পাস করার জন্য Safe Args ব্যবহার করুন দেখুন।

Safe Args ব্যবহার করে টাইপ নিরাপত্তা নিশ্চিত করুন

Safe Args Gradle প্লাগ-ইন ব্যবহার করে গন্তব্যের মধ্যে নেভিগেট করুন। এই প্লাগ-ইন সহজ অবজেক্ট ও বিল্ডার ক্লাস তৈরি করে যা টাইপ-সেফ নেভিগেশন ও ডেস্টিনেশনের মধ্যে আর্গুমেন্ট পাস করার সুবিধা দেয়।

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

গ্রুভি

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.10.2"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

কোটলিন

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.10.2"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    }
}

আপনাকে উপলব্ধ দুটি প্লাগইনের মধ্যে একটি অবশ্যই প্রয়োগ করতে হবে।

জাভা অথবা জাভা ও কোটলিনের মিশ্র মডিউলের জন্য উপযুক্ত জাভা ল্যাঙ্গুয়েজ কোড তৈরি করতে, আপনার অ্যাপ বা মডিউলের build.gradle ফাইলে এই লাইনটি যোগ করুন:

গ্রুভি

plugins {
  id 'androidx.navigation.safeargs'
}

কোটলিন

plugins {
    id("androidx.navigation.safeargs")
}

বিকল্পভাবে, শুধুমাত্র কোটলিন মডিউলের জন্য উপযুক্ত কোটলিন কোড তৈরি করতে যোগ করুন:

গ্রুভি

plugins {
  id 'androidx.navigation.safeargs.kotlin'
}

কোটলিন

plugins {
    id("androidx.navigation.safeargs.kotlin")
}

AndroidX-এ মাইগ্রেট করার নির্দেশনা অনুযায়ী, আপনার gradle.properties ফাইলে android.useAndroidX=true অবশ্যই থাকতে হবে।

Safe Args চালু করার পরে, প্লাগ-ইন এমন কোড তৈরি করে যাতে আপনার সংজ্ঞায়িত প্রতিটি অ্যাকশনের জন্য ক্লাস ও মেথড থাকে। এছাড়াও, প্রতিটি অ্যাকশনের জন্য Safe Args প্রতিটি উৎপত্তিগত গন্তব্যের জন্য একটি ক্লাস তৈরি করে, যা হল সেই গন্তব্য যেখান থেকে অ্যাকশনটি শুরু হয়। তৈরি হওয়া ক্লাস নামটি হল যাত্রা শুরুর গন্তব্য ক্লাস নাম এবং "Directions" শব্দের কম্বিনেশন। যেমন, গন্তব্যের নাম SpecifyAmountFragment হলে, জেনারেট করা ক্লাসের নাম SpecifyAmountFragmentDirections হবে। জেনারেট করা ক্লাসে, সোর্স ডেস্টিনেশনে সংজ্ঞায়িত প্রতিটি অ্যাকশনের জন্য একটি স্ট্যাটিক মেথড থাকে। এই পদ্ধতিটি আর্গুমেন্ট হিসেবে যেকোনও নির্দিষ্ট অ্যাকশন প্যারামিটার গ্রহণ করে এবং একটি NavDirections অবজেক্ট রিটার্ন করে যা আপনি navigate()-এ পাস করতে পারবেন।

উদাহরণস্বরূপ, ধরা যাক আমাদের কাছে একটি নেভিগেশন গ্রাফ আছে যাতে একটি অ্যাকশন আছে যা শুরুর গন্তব্য, SpecifyAmountFragment, থেকে শেষ গন্তব্য, ConfirmationFragment-এর সাথে কানেক্ট করে।

Safe Args একটি SpecifyAmountFragmentDirections ক্লাস তৈরি করে যার মধ্যে একটি মেথড থাকে, actionSpecifyAmountFragmentToConfirmationFragment(), যা একটি NavDirections অবজেক্ট রিটার্ন করে। এই ফেরত আসা NavDirections অবজেক্টটি তারপর সরাসরি navigate()-এ পাস করা যেতে পারে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

Kotlin

override fun onClick(view: View) {
    val action =
        SpecifyAmountFragmentDirections
            .actionSpecifyAmountFragmentToConfirmationFragment()
    view.findNavController().navigate(action)
}

জাভা

@Override
public void onClick(View view) {
    NavDirections action =
        SpecifyAmountFragmentDirections
            .actionSpecifyAmountFragmentToConfirmationFragment();
    Navigation.findNavController(view).navigate(action);
}

Safe Args-এর মাধ্যমে ডেস্টিনেশনের মধ্যে ডেটা পাস করার ব্যাপারে আরও তথ্যের জন্য, ডেস্টিনেশনের মধ্যে ডেটা পাস করুন লিঙ্কে গিয়ে টাইপ নিরাপত্তা সহ ডেটা পাস করার জন্য Safe Args ব্যবহার করুন বিকল্প দেখুন।