নেভিগেশন ইভেন্ট

নেভিগেশন ইভেন্ট লাইব্রেরি সিস্টেম ব্যাক এবং প্রেডিকটিভ ব্যাক পরিচালনার জন্য একটি KMP-প্রথম API প্রদান করে।
সর্বশেষ আপডেট স্থিতিশীল রিলিজ প্রার্থী মুক্তি বিটা রিলিজ আলফা রিলিজ
30 জুলাই, 2025 - - - 1.0.0-আলফা05

নির্ভরতা ঘোষণা করা

নেভিগেশন ইভেন্টের উপর নির্ভরতা যোগ করতে, আপনাকে অবশ্যই আপনার প্রকল্পে Google Maven সংগ্রহস্থল যোগ করতে হবে। আরও তথ্যের জন্য Google এর Maven সংগ্রহস্থল পড়ুন।

আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে আপনার প্রয়োজনীয় আর্টিফ্যাক্টগুলির জন্য নির্ভরতা যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.navigationevent:navigationevent:1.0.0-alpha05"
}

কোটলিন

dependencies {
    implementation("androidx.navigationevent:navigationevent:1.0.0-alpha05")
}

নির্ভরতা সম্পর্কে আরও তথ্যের জন্য, বিল্ড নির্ভরতা যুক্ত করুন দেখুন।

প্রতিক্রিয়া

আপনার প্রতিক্রিয়া জেটপ্যাককে আরও ভাল করতে সাহায্য করে। আপনি যদি নতুন সমস্যা আবিষ্কার করেন বা এই লাইব্রেরির উন্নতির জন্য ধারনা পান তাহলে আমাদের জানান। আপনি একটি নতুন তৈরি করার আগে অনুগ্রহ করে এই লাইব্রেরিতে বিদ্যমান সমস্যাগুলি দেখুন৷ আপনি তারকা বোতামে ক্লিক করে একটি বিদ্যমান সমস্যায় আপনার ভোট যোগ করতে পারেন।

একটি নতুন সমস্যা তৈরি করুন

আরও তথ্যের জন্য ইস্যু ট্র্যাকার ডকুমেন্টেশন দেখুন।

এই শিল্পকর্মের জন্য কোন রিলিজ নোট নেই.

সংস্করণ 1.0

সংস্করণ 1.0.0-alpha05

30 জুলাই, 2025

androidx.navigationevent:navigationevent-*:1.0.0-alpha05 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha05-এ এই কমিট রয়েছে।

পিতামাতা-সন্তান শ্রেণিবিন্যাস সমর্থন:

একটি NavigationEventDispatcher এখন পিতামাতা এবং শিশু প্রেরণকারী থাকতে পারে, যা একটি শ্রেণিবদ্ধ গাছের কাঠামো তৈরি করে। এটি শৃঙ্খলিত প্রেরকদের মাধ্যমে UI এর কাঠামোগত শ্রেণিবিন্যাস প্রতিফলিত করে জটিল রচনা UI উপাদান জুড়ে নেভিগেশন ইভেন্টগুলিকে প্রচার করতে এবং আরও নমনীয়ভাবে পরিচালনা করতে সক্ষম করে। ( I194ac )

  // Create a parent dispatcher that will manage navigation events at a higher level.
  val parentDispatcher = NavigationEventDispatcher()

  // Create a child dispatcher linked to the parent, forming a hierarchy.
  val childDispatcher = NavigationEventDispatcher(parentDispatcher)

অনুক্রমিক isEnabled প্রপার্টি একজন প্রেরককে টপ-ডাউন নিয়ন্ত্রণের অনুমতি দেয়। যখন isEnabled একটি প্রেরককে false হিসাবে সেট করা হয়, তখন এটি স্বয়ংক্রিয়ভাবে তার সমস্ত বংশধর প্রেরককে অক্ষম করে। এই বৈশিষ্ট্যটি নেভিগেশন ইভেন্ট সিস্টেমের সম্পূর্ণ শাখাগুলিকে দক্ষতার সাথে টগল বন্ধ করতে সক্ষম করে। ( I9e985 )

  // Disabling the child dispatcher disables all its callbacks and any of its children recursively.
  childDispatcher.isEnabled = false

তাছাড়া, NavigationEventCallbackisEnabled প্রপার্টি এখন তার সংশ্লিষ্ট প্রেরকের সক্রিয় অবস্থাকে সম্মান করে। এর অর্থ হল একটি কলব্যাক সক্রিয় বলে বিবেচিত হয় শুধুমাত্র যদি কলব্যাক নিজেই এবং এর প্রেরণকারী (এর পূর্বপুরুষ সহ) উভয়ই সক্ষম থাকে, কলব্যাক অ্যাক্টিভেশনের উপর ধারাবাহিক স্তরবিন্যাস নিয়ন্ত্রণ নিশ্চিত করে৷ ( I1799a )

  // Create a test callback and add it to the child dispatcher.
  val callback1 = TestNavigationEventCallback(isEnabled = true)
  childDispatcher.addCallback(callback1)

  // Since the childDispatcher is disabled, the callback is effectively disabled as well.
  assertThat(callback1.isEnabled).isFalse()

প্রেরক এবং তাদের সন্তানদের সঠিকভাবে পরিষ্কার করার জন্য একটি নতুন dispose() পদ্ধতি চালু করা হয়েছে। কল dispose() মেমরি ফাঁস রোধ করতে শ্রোতাদের থামিয়ে দেয়, সমস্ত চাইল্ড ডিসপ্যাচারকে পুনরাবৃত্তভাবে নিষ্পত্তি করে, ডিসপ্যাচারের কাছে নিবন্ধিত সমস্ত কলব্যাকগুলি সরিয়ে দেয় এবং এটিকে তার পিতামাতার থেকে আনলিঙ্ক করে। এটি গ্যারান্টি দেয় যে সংস্থানগুলি সঠিকভাবে মুক্তি পাবে যখন প্রেরকদের আর প্রয়োজন হয় না। ( I9e985 )

  // Dispose the child dispatcher to clean up resources.
  childDispatcher.dispose()

যদি একটি নিষ্পত্তিকৃত প্রেরককে কোনো পাবলিক পদ্ধতি কল করা হয়, তাহলে অবিলম্বে একটি IllegalStateException নিক্ষেপ করা হয়। এটি নীরব ব্যর্থতা প্রতিরোধ করে এবং বিকাশকারীদের বিকাশের সময় অনুপযুক্ত ব্যবহার সনাক্ত করতে সহায়তা করে। ( IC2dc3 )

  val callback2 = TestNavigationEventCallback()

  // Attempting to use a disposed dispatcher will throw an exception.
  assertThrows<IllegalStateException> {
      childDispatcher.addCallback(callback2)
  }

দ্রষ্টব্য: আমরা একটি নতুন NavigationEventDispatcherOwner Composable প্রবর্তন করব যা aosp/3692572- এ কম্পোজ UI-এর মধ্যে একটি শিশু প্রেরণকারীকে স্বয়ংক্রিয়ভাবে পরিচালনা করে। যাইহোক, এই পরিবর্তনটি এটিকে বর্তমান রিলিজ কাটে পরিণত করেনি এবং পরবর্তীটির জন্য পরিকল্পনা করা হয়েছে।

নেভিগেশন টেস্টিং লাইব্রেরি

  • navigationevent লাইব্রেরির জন্য ডেডিকেটেড টেস্টিং ইউটিলিটি প্রদান করতে navigationevent-testing মডিউল যোগ করুন। ( 0e50b6 )
  • পরীক্ষার জন্য TestNavigationEventCallback জাল ইউটিলিটি ক্লাস যোগ করুন। এটি কলব্যাক পদ্ধতির কল রেকর্ড করে এবং যাচাইকরণ সমর্থন করার জন্য প্রাপ্ত NavigationEvent আইটেম স্টোর করে। ( 4a0246 )
  • ন্যাভিগেশন ইভেন্ট প্রক্রিয়াকরণের জন্য ইউনিট পরীক্ষা সহজ করে, ডিফল্ট মান সহ NavigationEvent দৃষ্টান্ত তৈরি করতে TestNavigationEvent জাল ইউটিলিটি ফাংশন যোগ করুন। ( 3b63f5 )
  • পরীক্ষার জন্য TestNavigationEventDispatcherOwner জাল ইউটিলিটি ক্লাস যোগ করুন। এটি পরীক্ষায় মিথস্ক্রিয়া যাচাইকে সমর্থন করার জন্য ফলব্যাক এবং সক্রিয়-রাষ্ট্র-পরিবর্তিত ইভেন্ট গণনাগুলি ট্র্যাক করে। ( c8753e )

এপিআই পরিবর্তন

  • KMP কমন কোডে এটি উপলব্ধ করতে NavigationEventInputHandler androidMain থেকে commonMain এ সরান। ইভেন্ট পাঠানোর জন্য নতুন public send* পদ্ধতি যোগ করুন। NavigationEventDispatcher এর ডিসপ্যাচ ফাংশন public থেকে internal পরিবর্তন করুন; ব্যবহারকারীদের এখন ইভেন্ট পাঠাতে NavigationEventInputHandler ব্যবহার করতে হবে। ( IA7114 )
  • NavigationInputHandler নাম পরিবর্তন করে OnBackInvokedInputHandler করুন। ( I63405 )

বাগ ফিক্স

  • রিফ্যাক্টর NavigationEventDispatcher মধ্যবর্তী তালিকা বরাদ্দ এড়ানো এবং কলব্যাক প্রেরণ কর্মক্ষমতা উন্নত করে ওভারহেড কমাতে। ( I82702 , I1a9d9 )
  • কম্পাইলের সময়ে বৈধ মান রেঞ্জ প্রয়োগ করতে এবং API নিরাপত্তা উন্নত করতে NavigationEventtouchX , touchY এবং progress ক্ষেত্রে @FloatRange টীকা যোগ করুন। ( Iac0ec )

সংস্করণ 1.0.0-alpha04

2 জুলাই, 2025

androidx.navigationevent:navigationevent-*:1.0.0-alpha04 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha04 এই কমিট ধারণ করে।

বাগ ফিক্স

  • navigationevent-compose জন্য implementedInJetBrainsFork ব্যবহার করা হয়েছে এবং কম্পোজ কনভেনশনের সাথে মেলে একটি commonStubs টার্গেট যোগ করেছে। JetBrains দ্বারা অনুরোধ করা পরিবর্তন. ( f60c79 )
  • সঠিক স্টাব জেনারেশন নিশ্চিত করতে Kotlin/Native-এর জন্য কম্পোজ কম্পাইলার প্লাগইনের স্থির প্রয়োগ। পাবলিক API বা আচরণের উপর কোন প্রভাব নেই। ( 1890c9 )

সংস্করণ 1.0.0-alpha03

18 জুন, 2025

androidx.navigationevent:navigationevent-*:1.0.0-alpha03 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha03-এ এই কমিট রয়েছে।

নতুন বৈশিষ্ট্য

  • navigationevent লাইব্রেরিতে জেটপ্যাক কম্পোজ বৈশিষ্ট্য সমর্থন করার জন্য একটি নতুন navigationevent-compose মডিউল প্রবর্তন করেছে। ( 980d78 )
  • NavigationEvent রচনা একটি নতুন LocalNavigationEventDispatcherOwner স্থানীয় রচনা যোগ করেছে৷ এটি বর্তমান রচনায় উপলব্ধ কিনা তা আরও ভালভাবে নির্ধারণ করতে এটি একটি বাতিলযোগ্য মান প্রদান করে। অন্তর্নিহিত মালিক খুঁজে না পাওয়া গেলে NavigationEventHandler এখন একটি ত্রুটি নিক্ষেপ করবে। ( 62ffda )
  • NavigationEvent কম্পোজ একটি নতুন NavigationEventHandler কম্পোজেবল যুক্ত করেছে (অনুমানমূলক ব্যাক জেসচার) ইভেন্টগুলি পরিচালনা করতে। এটি NavigationEvent অবজেক্টের একটি Flow সরবরাহ করে যা অবশ্যই আপনার সরবরাহ করা সাসপেন্ডিং ল্যাম্বডাতে সংগ্রহ করতে হবে c42ba6 :
NavigationEventHandler { progress: Flow<NavigationEvent> ->
  // This block is executed when the back gesture begins.
  try {
    progress.collect { backEvent ->
      // Handle gesture progress updates here.
    }
    // This block is executed if the gesture completes successfully.
  } catch (e: CancellationException) {
    // This block is executed if the gesture is cancelled
    throw e
  } finally {
    // This block is executed either the gesture is completed or cancelled
  }
}

এপিআই পরিবর্তন

  • প্রতিটি NavigationEventCallback এখন একটি সময়ে শুধুমাত্র একটি NavigationEventDispatcher দিয়ে নিবন্ধিত হতে পারে; এটি একাধিক প্রেরণকারীর সাথে যোগ করা একটি IllegalStateException নিক্ষেপ করে। মনে রাখবেন যে এই আচরণটি OnBackPressedDispatcher থেকে আলাদা, যা একাধিক প্রেরণকারীকে অনুমতি দেয়। ( e82c19 )
  • নেভিগেশনের সময় মিউটেশন প্রতিরোধ করার জন্য একটি val isPassThrough তৈরি করা হয়েছে, যা NavigationEvent প্রেরণকে ভঙ্গ করতে পারে। ( I0b287 )

সংস্করণ 1.0.0-alpha02

জুন 4, 2025

androidx.navigationevent:navigationevent-*:1.0.0-alpha02 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha02-এ এই কমিট রয়েছে।

এপিআই পরিবর্তন

  • ডিফল্ট আর্গুমেন্ট দিয়ে NavigationEventDispatcher এর সেকেন্ডারি কনস্ট্রাক্টর প্রতিস্থাপন করুন। ( I716a0 )
  • NavigationEventCallback থেকে অগ্রাধিকার সম্পত্তি সরান। পরিবর্তে NavigationEventDispatcher.addCallback() কে অগ্রাধিকার দিন। ( I13cae )

বাগ ফিক্স

  • একটি ConcurrentModificationException স্থির করা হয়েছে যা ঘটতে পারে যখন NavigationEventCallback.remove() কল করা হয়েছিল একযোগে বন্ধযোগ্যদের অভ্যন্তরীণ তালিকা পরিবর্তন করার কারণে। ( b/420919815 )

সংস্করণ 1.0.0-alpha01

20 মে, 2025

androidx.navigationevent:navigationevent-*:1.0.0-alpha01 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha01-এ এই কমিট রয়েছে।

নতুন বৈশিষ্ট্য

  • androidx.navigationevent লাইব্রেরি সিস্টেম ব্যাক এবং প্রেডিকটিভ ব্যাক পরিচালনার জন্য একটি KMP-প্রথম API প্রদান করে। NavigationEventDispatcher সিস্টেম ব্যাক ইভেন্টগুলি গ্রহণের জন্য এক বা একাধিক NavigationEventCallback দৃষ্টান্ত নিবন্ধন করার জন্য একটি সাধারণ API হিসাবে কাজ করে।
  • এই স্তরটি androidx.activity এ পূর্বে প্রকাশিত API-এর নীচে বসে এবং উচ্চ স্তরের উপাদানগুলিতে কার্যকলাপ APIগুলি ব্যবহার করার জন্য বা সরাসরি Android ফ্রেমওয়ার্ক OnBackInvokedDispatcher APIগুলি ব্যবহার করার জন্য একটি কম মতামতযুক্ত প্রতিস্থাপনের লক্ষ্য। অ্যাক্টিভিটি 1.12.0-alpha01- এর অংশ হিসেবে androidx.activity API গুলিকে নেভিগেশন ইভেন্ট API-এর উপরে আবার লেখা হয়েছে।