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

নেভিগেশন ইভেন্ট লাইব্রেরিটি সিস্টেম ব্যাক এবং প্রেডিক্টিভ ব্যাক উভয়ই হ্যান্ডেল করার জন্য একটি KMP-ফার্স্ট API প্রদান করে।
সর্বশেষ আপডেট স্থিতিশীল রিলিজ রিলিজ প্রার্থী বিটা রিলিজ আলফা রিলিজ
২৭ মার্চ, ২০২৬ ১.০.২ - ১.১.০-বিটা০১ -

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

navigationevent-এর উপর ডিপেন্ডেন্সি যোগ করতে হলে, আপনাকে আপনার প্রজেক্টে গুগল মেভেন রিপোজিটরি যোগ করতে হবে। আরও তথ্যের জন্য গুগলের মেভেন রিপোজিটরি পড়ুন।

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

গ্রোভি

dependencies {
    implementation "androidx.navigationevent:navigationevent:1.1.0-beta01"
}

কোটলিন

dependencies {
    implementation("androidx.navigationevent:navigationevent:1.1.0-beta01")
}

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

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

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

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

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

এই আর্টিফ্যাক্টটির জন্য কোনো রিলিজ নোট নেই।

সংস্করণ ১.১

সংস্করণ 1.1.0-beta01

সংস্করণ 1.1.0-beta01

২৭ মার্চ, ২০২৬

androidx.navigationevent:navigationevent-*:1.1.0-beta01 প্রকাশিত হয়েছে। সংস্করণ 1.1.0-beta01-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

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

  • অনিয়ন্ত্রিত ফরোয়ার্ড নেভিগেশন ইভেন্টগুলির জন্য একটি ডিফল্ট সিস্টেম আচরণ সক্রিয় করতে, NavigationEventDispatcherOnForwardCompletedFallback যোগ করুন। ( Iac620 , b/489138116 )

সংস্করণ 1.1.0-alpha01

২৫শে ফেব্রুয়ারি, ২০২৬

androidx.navigationevent:navigationevent-*:1.1.0-alpha01 প্রকাশিত হয়েছে। সংস্করণ 1.1.0-alpha01-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

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

  • NavigationEvent-Compose-এ সমস্ত Kotlin Multiplatform (KMP) টার্গেট সমর্থন করুন। LocalView থেকে ওনার রেজোলিউশনকে বিচ্ছিন্ন করুন, যাতে প্ল্যাটফর্ম হোস্টগুলি একটি ডিফল্ট LocalNavigationEventDispatcherOwner প্রদান করতে পারে এবং একই সাথে Android-এ LocalView একটি নিরাপদ ফলব্যাক হিসেবে বজায় রাখতে পারে। ( Iae980 , b/434940570 , Iccf58 )

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

  • অ্যান্ড্রয়েডের BackEvent এবং NavigationEvent এর মধ্যে রূপান্তর করার জন্য NavigationEvent.toBackEvent() এবং BackEvent.toNavigationEvent() এক্সটেনশন ফাংশন যোগ করুন। ( Ie3b71 , b/477001292 )

সংস্করণ ১.০

সংস্করণ ১.০.২

২৮ জানুয়ারী, ২০২৬

androidx.navigationevent:navigationevent-*:1.0.2 প্রকাশিত হয়েছে। সংস্করণ 1.0.2-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

বাগ সংশোধন

  • অ্যান্ড্রয়েড স্টুডিও প্রিভিউতে NavigationEventHandler ব্যবহার করার সময় ক্র্যাশ হওয়ার সমস্যাটি সমাধান করা হয়েছে। হ্যান্ডলারটি এখন ইন্সপেকশন মোড শনাক্ত করে এবং কিছুই করে না, ফলে কোনো ডিসপ্যাচার ছাড়াই প্রিভিউটি রেন্ডার হতে পারে। ( I370f2 , b/454313986 )।

সংস্করণ ১.০.১

০৩ ডিসেম্বর, ২০২৫

androidx.navigationevent:navigationevent-*:1.0.1 প্রকাশিত হয়েছে। সংস্করণ 1.0.1-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

বাগ সংশোধন

  • rememberNavigationEventDispatcherOwner() দিয়ে তৈরি করা চাইল্ড NavigationEventDispatcher এর মতো ডিভাইস ডিসপোজ করার সময় একটি ConcurrentModificationException সমাধান করা হয়েছে। ( ec68a9 , b/454363524 )

সংস্করণ ১.০.০

১৯ নভেম্বর, ২০২৫

androidx.navigationevent:navigationevent-*:1.0.0 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

১.০.০ এর প্রধান বৈশিষ্ট্যসমূহ:

Navigation Event লাইব্রেরি এখন স্থিতিশীল! Navigation Event হলো অ্যান্ড্রয়েডএক্স-এর একটি লাইব্রেরি, যা অ্যান্ড্রয়েড (এবং অন্যান্য প্ল্যাটফর্মে) সিস্টেম-ব্যাক এবং প্রেডিক্টিভ ব্যাক-এর মতো সিস্টেম-স্তরের ইন্টারঅ্যাকশনগুলো পরিচালনা করে।

  • NavigationEvent হ্যান্ডেল করার জন্য, আপনি আপনার নিজস্ব NavigationEventHandler ইমপ্লিমেন্ট করতে পারেন যা প্রয়োজনীয় ফাংশনগুলোকে ওভাররাইড করে। এরপর আপনাকে হ্যান্ডলারটিকে একটি NavigationEventDispatcher এ যুক্ত করতে হবে। Activity 1.12.0 রিলিজ থেকে শুরু করে, ComponentActivity নতুন NavigationEventDispatcherOwner ইন্টারফেসটি ইমপ্লিমেন্ট করে, যা ব্যবহারের জন্য প্রস্তুত একটি ডিসপ্যাচার প্রদান করে।

    // The NavigationEventInfo provides information about a navigation state
    object CurrentInfo : NavigationEventInfo()
    
    // you can retrieve this from any component that is a NavigationEventDispatcherOwner
    // or you can instantiate your own custom dispatcher
    val dispatcher = myActivity.navigationEventDispatcher
    
    val myHandler = object : NavigationEventHandler<NavigationEventInfo>(
                initialInfo = CurrentInfo,
                isBackEnabled = true
            ) {
                override fun onBackStarted(event: NavigationEvent) {
                    // Prepare for the back event
                }
    
                override fun onBackProgressed(event: NavigationEvent) {
                    // Use event.progress for predictive animations
                }
    
                // This is the required method for final event handling
                override fun onBackCompleted() {
                    // Complete the back event
                }
    
                override fun onBackCancelled() {
                    // Cancel the back event
                }
            }
    
    dispatcher.addHandler(myHandler)
    
  • navigationevent:navigationevent-compose মডিউলটি একটি সুবিধাজনক কম্পোজ ফাংশন NavigationBackHandler প্রদান করে, যা স্বয়ংক্রিয়ভাবে হ্যান্ডলারটিকে নিকটতম LocalNavigationEventDispatcherOwner এর NavigationEventDispatcher সাথে সংযুক্ত করে এবং ডেভেলপারদের প্যারামিটার হিসেবে কাঙ্ক্ষিত আচরণ সরবরাহ করার সুযোগ দেয়।

    object CurrentInfo : NavigationEventInfo()
    object PreviousInfo : NavigationEventInfo()
    
    val navEventState = rememberNavigationEventState(
      currentInfo = CurrentInfo,
      backInfo = PreviousInfo
    )
    
    // Inside composition
    NavigationBackHandler(
        State = navEventState,
        isBackEnabled = true,
        // optional
        onBackCancelled = { // Cancel the back event },
        // required
        onBackCompleted = { // Complete the back event } ,
    )
    

Compose-এ এই প্যাটার্নটি ব্যবহার করে NavigationEventState কে হোইস্ট করা খুব সহজ হয়ে যায় এবং এর ফলে বিভিন্ন Composable এটিকে পর্যবেক্ষণ করতে পারে (যেমন Navigation3-এর ক্ষেত্রে, যেখানে আপনি NavDisplay থেকে স্টেটটিকে বাইরে হোইস্ট করতে পারেন)।

  • প্রতিটি NavigationEventDispatcher একটি প্যারেন্ট ডিসপ্যাচার প্রদান করার ক্ষমতা রয়েছে, যা কম্পোজ এবং নন-কম্পোজ উভয় ক্ষেত্রেই প্রযোজ্য। এটি ডেভেলপারদের একটি শ্রেণিবদ্ধ কাঠামো তৈরি করার সুযোগ দেয়, যেখানে একাধিক ডিসপ্যাচারকে একটিমাত্র প্যারেন্ট দ্বারা পরিচালনা করা যায়। একটি প্যারেন্ট থাকার ফলে, যেসব ডিসপ্যাচারের দলকে নিষ্ক্রিয় বা ডিসপোজ করার প্রয়োজন হতে পারে, তাদের পরিচালনা করা তুলনামূলকভাবে সহজ হয়ে যায়।

    // Non-Compose
    val parentDispatcher = NavigationEventDispatcher()
    val childDispatcher = NavigationEventDispatcher(parent = parentDispatcher)
    
    // Compose
    val composeChildDispatcher = rememberNavigationEventDispatcher(
        // This defaults to `LocalNavigationEventDispatcherOwner.current`
        // Must explicitly provide null to have an unparented dispatcher created here
        parent = NavigationEventDispatch() 
    )
    
  • লাইব্রেরিটি একটি NavigationEventInput মাধ্যমে সরাসরি NavigationEventDispatcher এ সিগন্যাল পাঠানোর সুযোগও করে দেয়। NavigationEventInput গুলো নেভিগেশন সিস্টেমের "ইনপুট" অংশ হিসেবে কাজ করে, যা প্ল্যাটফর্ম-নির্দিষ্ট ইভেন্টগুলোকে (যেমন সিস্টেম ব্যাক জেসচার বা বাটন ক্লিক) এমন প্রমিত ইভেন্টে রূপান্তরিত করে যা একটি NavigationEventDispatcher এ পাঠানো যায়। navigationevent:navigationevent মডিউলটি বর্তমানে দুটি NavigationEventInput প্রদান করে: একটি অধিক জেনেরিক DirectNavigationEventInput যা যেকোনো ইভেন্ট ডিসপ্যাচ করার সুযোগ দেয় এবং একটি অ্যান্ড্রয়েড-নির্দিষ্ট OnBackInvokedInput যা একটি NavigationEventDispatcher সিস্টেম ব্যাক এবং প্রেডিক্টিভ ব্যাক জেসচার সমর্থন করতে সাহায্য করে। আপনি যদি ComponentActivity দ্বারা প্রদত্ত ডিসপ্যাচার ব্যবহার না করে নিজের ডিসপ্যাচার প্রয়োগ করেন, তবে আপনাকে ম্যানুয়ালি আপনার ইনপুট যোগ করতে হবে:

    val dispatcher = NavigationEventDispatcher()
    
    dispatcher.addInput(DirectNavigationEventInput())
    dispatcher.addInput(OnBackInvokedDefaultInput(invoker))
    

সংস্করণ 1.0.0-rc01

০৫ নভেম্বর, ২০২৫

androidx.navigationevent:navigationevent-*:1.0.0-rc01 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-rc01-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

সংস্করণ 1.0.0-beta01

০৮ অক্টোবর, ২০২৫

androidx.navigationevent:navigationevent-*:1.0.0-beta01 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-beta01-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

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

  • NavigationEvent.touchX এবং NavigationEvent.touchY এর জন্য FloatRange অ্যানোটেশনটি সংশোধন করুন। এই মানগুলি পরম পিক্সেল স্থানাঙ্ককে প্রতিনিধিত্ব করে এবং এদের কোনো 1.0 ঊর্ধ্বসীমা নেই। ( I4b205 , b/445989313 )
  • NavigationEventDispatcherOwner কম্পোজেবলটিকে rememberNavigationEventDispatcherOwner এ রিফ্যাক্টর করুন। ফাংশনটি এখন সরাসরি NavigationEventDispatcherOwner রিটার্ন করে। কোনো সাব-কম্পোজিশনে এই ওনারটি সরবরাহ করতে CompositionLocalProvider ব্যবহার করুন। ( I874b2 , b/444446629 )

সংস্করণ 1.0.0-alpha09

২৪ সেপ্টেম্বর, ২০২৫

androidx.navigationevent:navigationevent-*:1.0.0-alpha09 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha09-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

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

  • Idle() ইনস্ট্যানশিয়েট করার পরিবর্তে সরাসরি NavigationEventTransitionState.Idle সিঙ্গেলটন অবজেক্টটি ব্যবহার করুন। ( Ic7d9e , b/444734264 )
  • সুবিধার্থে কনস্ট্রাক্টরগুলোকে অভ্যন্তরীণ করুন; সরাসরি নির্মাণের পরিবর্তে public NavigationEventDispatcher.history এর মাধ্যমে ইনস্ট্যান্স সংগ্রহ করুন। ( I3b7e0 , b/444734264 )
  • rememberNavigationEventState এর মাধ্যমে NavigationEventState তৈরি করা আবশ্যক; কনস্ট্রাক্টরটি এখন অভ্যন্তরীণ। ( Ie143c , b/444734264 )
  • fallbackOnBackPressed ব্যবহার এবং কনস্ট্রাক্টর প্যারামিটারের পরিবর্তে onBackCompletedFallback গ্রহণ করা হয়েছে। এর আচরণ অপরিবর্তিত; এটি শুধুমাত্র সম্পন্ন হওয়া কিন্তু হ্যান্ডেল না করা ব্যাক ইভেন্টের ক্ষেত্রেই কল করা হয়। ( Idabe9 , b/444734264 )
  • NavigationEventHistory(mergedHistory, currentIndex) এর প্রাইমারি কনস্ট্রাক্টর এখন internal । এক্সটারনাল কনজিউমারদের ইনস্ট্যান্স তৈরি করার জন্য অবশ্যই পাবলিক কনস্ট্রাক্টর (হয় এম্পটি কনস্ট্রাক্টর অথবা পার্টিশন-ভিত্তিক কনস্ট্রাক্টর) ব্যবহার করতে হবে। ( I1c047 , b/444734264 )
  • View.setViewTreeNavigationEventDispatcherOwner nullable owner গ্রহণ করার উপযোগী করুন ( Ic9eb6 , b/444436762 )
  • NavigationEventInfo এখন একটি interface পরিবর্তে একটি abstract class । সমস্ত কাস্টম ইমপ্লিমেন্টেশনকে এই ক্লাস থেকে ইনহেরিট করার জন্য আপডেট করুন (যেমন, data class MyInfo : NavigationEventInfo() )। ( I1e59c , b/444734264 )
  • পুরানো NavigationEventDispatcher.state প্রপার্টি এবং getState<T>() ফাংশন সরিয়ে ফেলা হয়েছে। নতুন, পৃথক dispatcher.transitionState (জেসচার অগ্রগতির জন্য) এবং dispatcher.history (ন্যাভিগেশন স্ট্যাকের জন্য) ফ্লো ব্যবহার করুন। ( Ic2ceb , b/444734264 )
  • NavigationEventInput.onInfoChanged(...) কলব্যাকটি প্রতিস্থাপিত হয়েছে। একটি একক NavigationEventHistory অবজেক্ট হিসাবে আপডেটগুলি গ্রহণ করতে নতুন onHistoryChanged(history: NavigationEventHistory) কলব্যাকটি প্রয়োগ করুন। ( I23e0b , b/444734264 )
  • একটি নতুন গ্লোবাল NavigationEventDispatcher.history StateFlow চালু করুন। এই নন-জেনেরিক ফ্লোটি অবজারভারদের শুধুমাত্র নেভিগেশন স্ট্যাকের পরিবর্তনগুলিতে সাবস্ক্রাইব করার অনুমতি দেয় এবং জেসচার চলাকালীন স্থিতিশীল থাকে। এটি transitionState এর প্রতিরূপ। ( I1db10 , b/444734264 )
  • একটি নতুন গ্লোবাল NavigationEventDispatcher.transitionState StateFlow চালু করুন। এই নন-জেনেরিক ফ্লো অবজারভারদেরকে হিস্ট্রি থেকে আলাদাভাবে শুধুমাত্র ফিজিক্যাল জেসচার স্টেট (Idle/InProgress)-এ সাবস্ক্রাইব করার সুযোগ দেয়। ( I171fa , b/444734264 )
  • NavigationEventHistoryState ক্লাসটি চালু করা হলো। এটি জেসচার স্টেট থেকে আলাদাভাবে নেভিগেশন তথ্যের ইতিহাস পর্যবেক্ষণের জন্য মূল এপিআই হিসেবে কাজ করবে। ( I81ca5 , b/444734264 )
  • NavigationEvent এখন @Immutable হিসেবে চিহ্নিত করা হয়েছে, যা Compose Compiler-কে রিকম্পোজিশন অপ্টিমাইজ করতে সক্ষম করে। ( If78c7 , b/444734264 )
  • navigationevent-compose হ্যান্ডলার API-গুলো আপডেট করা হয়েছে। NavigationEventHandler এবং NavigationBackHandler (এবং এর বিভিন্ন সংস্করণ) এখন একটি নতুন ওভারলোড সমর্থন করে যা একটি হোয়িস্টেড NavigationEventState গ্রহণ করে। সাধারণ ওভারলোডগুলো (যা currentInfo গ্রহণ করে) অপরিবর্তিত রাখা হয়েছে এবং এখন অভ্যন্তরীণভাবে এই নতুন স্টেট মডেলটি ব্যবহার করে। ( Ic3251 , b/444734264 )
  • navigationevent-compose লাইব্রেরিতে নতুন @Stable NavigationEventState<T> স্টেট হোল্ডারটি যোগ করুন। এই অবজেক্টটি লোকাল হিস্ট্রি ও লোকাল জেসচার স্টেটকে একত্রিত করে এবং এটি rememberNavigationEventStateNavigationEventHandler মধ্যে প্রধান সংযোগ হিসেবে কাজ করবে। ( Ifb69f , b/444734264 )
  • NavigationEventHandler এ একটি নতুন পাবলিক, রিড-অনলি transitionState: TransitionState প্রপার্টি যোগ করা হয়েছে। হ্যান্ডলারগুলো এখন তাদের নিজস্ব ট্রানজিশন স্টেট বজায় রাখে, যা বাহ্যিক সিস্টেমগুলো পর্যবেক্ষণ করতে পারে। ( I9acd2 , b/444734264 )
  • নতুন TransitionState সিলড ক্লাসটি চালু করা হলো। এটি নেভিগেশন হিস্ট্রি থেকে আলাদাভাবে জেসচার স্টেট পর্যবেক্ষণের জন্য মূল এপিআই হিসেবে কাজ করবে। ( Id4beb , b/444734264 )
  • NavigationEventHandlercurrentInfo , backInfo , এবং forwardInfo পাবলিক, রিড-অনলি প্রোপার্টি হিসেবে প্রকাশ করুন। ( Ia7636 , b/444734264 )
  • NavigationEventHandler এর ইমপ্লিমেন্টেশনগুলোকে এখন থেকে বেস কনস্ট্রাক্টরে একটি initialInfo: T ভ্যালু প্রদান করতে হবে। ( Idcfea , b/444734264 )
  • OnBackInvokedInput OnBackInvokedOverlayInput অথবা OnBackInvokedDefaultInput দ্বারা প্রতিস্থাপন করুন। ( I5323f , b/428948766 )
  • NavigationEventState @Immutable হিসেবে চিহ্নিত করুন। এটি নিশ্চিত করে যে এই স্টেট পর্যবেক্ষণকারী Composable-গুলি সঠিকভাবে রিকম্পোজিশন এড়িয়ে যেতে পারে, যার ফলে Compose-এর পারফরম্যান্স উন্নত হয়। ( I399c8 )
  • NavigationEventInfo.NotProvided কে NavigationEventInfo.None; রেফারেন্সগুলি আপডেট করুন। আচরণে কোনো পরিবর্তন হবে না। ( I5e2d4 )
  • NavigationEventInfo এখন @Immutable হিসেবে চিহ্নিত করা হয়েছে, যা Compose Compiler-কে রিকম্পোজিশন অপ্টিমাইজ করতে সক্ষম করে। ( I7c112 )
  • ব্যাক কমপ্লিশন ফলব্যাকের জন্য মজাদার ইন্টারফেসের মাধ্যমে জাভার কর্মদক্ষতা উন্নত করুন। ( I8a860 )
  • onHasEnabledHandlerChanged onHasEnabledHandlersChanged এ রিনেম করুন। এটি স্পষ্ট করে যে কলব্যাকটি শুধুমাত্র একটি হ্যান্ডলারের নয়, বরং সমস্ত হ্যান্ডলারের সম্মিলিত সক্রিয়করণ অবস্থার উপর রিপোর্ট করে। ( I1af61 , b/443711297 )
  • NavigationEventDispatcher থেকে hasEnabledHandler() সরিয়ে দিন NavigationEventDispatcher; এর পরিবর্তে NavigationEventInput.onHasEnabledHandlersChanged ব্যবহার করুন। ( Idef72 , b/443711297 )
  • ন্যাভিগেশন হিস্ট্রির পরিবর্তন সম্পর্কে লিসেনারদের অবহিত করতে NavigationEventInputonInfoChanged কলব্যাক যোগ করুন। এটি বর্তমান, পূর্ববর্তী এবং পরবর্তী স্ট্যাকের সম্পূর্ণ প্রেক্ষাপট প্রদান করে, যা ইনপুটগুলিকে প্রাসঙ্গিক তথ্যের উপর ভিত্তি করে প্রতিক্রিয়া জানাতে সক্ষম করে। ( I69a8b , b/443282983 )
  • NavigationEvent এর swipeEdge একটি @IntDef পরিণত করুন ( Icee54 , b/443950342 )
  • একটি ডিসপ্যাচারকে একটি নির্দিষ্ট প্রায়োরিটিতে সীমাবদ্ধ করতে NavigationEventDispatcher.addInput এ একটি priority প্যারামিটার যোগ করুন; এর ফলে onHasEnabledCallbacksChanged এর মতো ইভেন্টগুলো এখন কেবল তখনই ফায়ার হবে যখন সেই প্রায়োরিটির কলব্যাকগুলো পরিবর্তিত হবে। ( I3e488 , b/443711297 )
  • স্পষ্টতার জন্য NavigationEventDispatcher প্যারামিটারটির নাম parentDispatcher থেকে parent-এ পরিবর্তন করুন। ( Id4f1f , b/443801782 )
  • জাভা ব্যবহারকারীদের জন্য @IntDef এর পক্ষে NavigationEventPriority অপসারণ করুন ( I10a9f , b/440514265 )
  • ন্যাভিগেশন হ্যান্ডলার চুক্তি কার্যকর করুন। যদি আপনার NavigationEventHandler isBackEnabled বা isForwardEnabled true সেট করে, তাহলে আপনাকে এখন যথাক্রমে onBackCompleted বা onForwardCompleted ওভাররাইড করতে হবে। ডিফল্ট ইমপ্লিমেন্টেশনগুলো এখন নীরব ব্যর্থতা রোধ করতে একটি এক্সেপশন থ্রো করে। ( I17c62 )
  • ন্যাভিগেশন ইভেন্ট হ্যান্ডলার যোগ করার সময় বৈধ প্রায়োরিটি মান প্রয়োগ করুন। এখন থেকে অসমর্থিত প্রায়োরিটি দিয়ে addHandler কল করলে একটি IllegalArgumentException থ্রো হবে, যা সমস্ত টার্গেট প্ল্যাটফর্মে ভুল ব্যবহারের জন্য তাৎক্ষণিক প্রতিক্রিয়া প্রদান করবে। ( I3c474 )

বাগ সংশোধন

  • addHandler আইডম্পোটেন্ট করুন; সদৃশ নিবন্ধন উপেক্ষা করুন। ( I052aa , b/444734264 )
  • পুনর্গঠনের সময় NavigationEventState প্রোপার্টিগুলো সিঙ্ক করে রাখুন। ( Ib3b4d , b/444734264 )
  • নিশ্চিত করুন যে NavigationEventInputs নিবন্ধনের সাথে সাথেই বর্তমান প্রাসঙ্গিক তথ্য (বর্তমান, পিছনে, সামনে) পায়। ( Ie65bf , b/443282983 )

সংস্করণ 1.0.0-alpha08

১০ সেপ্টেম্বর, ২০২৫

androidx.navigationevent:navigationevent-*:1.0.0-alpha08 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha08-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

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

  • ফ্লো-ভিত্তিক হ্যান্ডলারের পরিবর্তে একটি ল্যাম্বডা-ভিত্তিক NavigationEventHandler API চালু করুন। ফ্লো সংগ্রহ করার পরিবর্তে সাধারণ কলব্যাকের মাধ্যমে সামনে ও পেছনে যাওয়ার অঙ্গভঙ্গি পরিচালনা করুন, যা বয়লারপ্লেট কোড কমায় এবং বাতিল হওয়ার সমস্যা এড়ায়। নির্দিষ্ট সুবিধার জন্য NavigationBackHandler এবং NavigationForwardHandler API হিসেবে প্রদান করুন। ফ্লো-ভিত্তিক NavigationEventHandler সরিয়ে দিন; নতুন কলব্যাকগুলিতে স্থানান্তরিত করুন। ( I23bac , b/436248277 )
  • প্যাসিভ লিসেনারদের সম্মিলিত ব্যাক ইনফোর মাধ্যমে সম্পূর্ণ নেভিগেশন ব্যাক স্ট্যাক অ্যাক্সেস করার অনুমতি দিন। UI-গুলিকে শুধুমাত্র শীর্ষ-স্থানীয় কলব্যাকে সীমাবদ্ধ না রেখে প্রিভিউ এবং নেস্টেড নেভিগেশন হিস্ট্রি রেন্ডার করতে সক্ষম করুন। ( I7a510 , b/436248277 )
  • ন্যাভিগেশন অবস্থা স্পষ্ট করতে এবং নেস্টেড হ্যান্ডলারের মাধ্যমে ফরোয়ার্ড ন্যাভিগেশন সমর্থন করার জন্য একটি সুস্পষ্ট ব্যাক/কারেন্ট/ফরোয়ার্ড মডেল চালু করুন। ( Ib86da , b/420443609 )
  • NavigationEventCallbackonForward* মেথড এবং isForwardEnabled যোগ করুন। ( Ic100f , b/436248290 )
  • NavigationEventInput এ ফরওয়ার্ড নেভিগেশন সাপোর্ট যোগ করুন। ( I5734b )

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

  • TestNavigationEventCallback ব্যবহার করে ফরওয়ার্ড ন্যাভিগেশন ইভেন্টগুলোর টেস্টিং সক্ষম করুন। isForwardEnabled এবং onForward* হুক ব্যবহার করুন। ( I21fb5 , b/420443609 )
  • NavEventonEvent* কলব্যাকগুলির নাম পরিবর্তন করে onBack* করা হয়েছে। ( I228b3 , b/436248290 )
  • SwipeEdge একটি ইনলাইন ক্লাসে রূপান্তর করুন। ( Id5e01 )
  • navigationevent লাইব্রেরিটিকে জাভার সাথে আন্তঃকার্যকরী করুন। সমস্ত পাবলিক এপিআই এখন জাভা কোড থেকে সম্পূর্ণরূপে অ্যাক্সেসযোগ্য, যা মিশ্র-ভাষা বা শুধুমাত্র-জাভা প্রোজেক্টে নির্বিঘ্ন ইন্টিগ্রেশন সক্ষম করে। ( Ibc944 , I5465f , I9fb1e , b/440532890 b/443040294 )
  • NavigationEventCallback নাম পরিবর্তন করে NavigationEventHandler রাখার মাধ্যমে API-এর ভূমিকা স্পষ্ট করুন। এই পরিবর্তনটি বহু-পর্যায়ের নেভিগেশন জেসচার পরিচালনার জন্য ক্লাসটির উদ্দেশ্যকে আরও ভালোভাবে প্রতিফলিত করে। সংশ্লিষ্ট addCallback মেথডটির নাম এখন addHandler । ( I2492a , b/443040331 )

বাগ সংশোধন

  • ফরওয়ার্ড নেভিগেশনের সময় ব্যাক ফলব্যাক চালু হওয়া প্রতিরোধ করুন। ( I74814 , b/436248290 )
  • প্রিডিক্টিভ ফরোয়ার্ড নেভিগেশনের জন্য সমর্থন যোগ করা হয়েছে। NavigationEvent API-গুলো এখন ব্যাক এবং ফরোয়ার্ড উভয় জেসচারই পরিচালনা করতে পারে, যার ফলে উভয় নেভিগেশন দিকের জন্য সামঞ্জস্যপূর্ণ অ্যানিমেশন পাওয়া যায়। ( Idc98c , b/436248290 )
  • যখন কোনো চাইল্ড NavigationEventDispatcherOwner সরিয়ে ফেলা হয়, তখন রিকম্পোজিশনের সময় একটি IllegalStateException ক্র্যাশ প্রতিরোধ করুন। ( Iff50c , b/412629020 )
  • প্যাসিভ লিসেনাররা এখন সম্মিলিত ব্যাক ইনফোর মাধ্যমে সম্পূর্ণ ন্যাভিগেশন ব্যাক স্ট্যাক অ্যাক্সেস করতে পারবে, যার ফলে UI-গুলো শুধুমাত্র শীর্ষস্থ কলব্যাকে সীমাবদ্ধ না থেকে প্রিভিউ এবং নেস্টেড ন্যাভিগেশন হিস্ট্রি রেন্ডার করতে পারবে। ( I7a510 , b/436248277 )

সংস্করণ 1.0.0-alpha07

২৭ আগস্ট, ২০২৫

androidx.navigationevent:navigationevent-*:1.0.0-alpha07 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha07-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

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

  • NavigationEventDispatcher.onHasEnabledCallbacksChanged মুছে ফেলুন। ( I50e97 )
  • NavigationEventCallback.onEventCompleted() কে অ্যাবস্ট্রাক্ট করুন। ( I36b38 )
  • NavigationEventCallback#on* মেথডগুলোকে protected এ পরিবর্তন করুন। সেগুলোকে ওভাররাইড করার জন্য কলিং কোড আপডেট করুন। ( I6b691 )
  • DirectNavigationEventInput ফাংশনগুলোর নাম পরিবর্তন করুন। ( Iffb62 )
  • NavigationEventInput.onAttach কে onAdded এ পুনঃনামকরণ করুন। ( I2d0b8 )
  • NavigationEventInput.onDetach কে onRemoved এ পুনঃনামকরণ করুন। ( I2d0b8 )
  • NavigationEventInputHandler নাম পরিবর্তন করে NavigationEventInput রাখুন। ( I676a4 )
  • NavigationEventInput.onHasEnabledCallbacksChanged@EmptySuper যোগ করুন। ( If9853 )
  • NavigationEventInputHandleronAttach প্রয়োগ করুন। ( I03648 )
  • NavigationEventInputHandleronDetach প্রয়োগ করুন। ( I03648 )
  • তৈরির সময় ডিফল্টরূপে NavigationEventCallback সক্রিয় করা হয়। ( Ic0188 )
  • NavigationEventInput.addOnHasEnabledCallbacksChangedCallback কে NavigationEventInput.onHasEnabledCallbacksChanged দিয়ে প্রতিস্থাপন করুন। ( I64e93 )
  • NavigationEventDispatcher.addInput এর জন্য প্রধান থ্রেড প্রয়োজন। ( Ic2930 )
  • NavigationEventDispatcher.removeInput এর জন্য প্রধান থ্রেড প্রয়োজন। ( Ic2930 )
  • Dispatcher.addOnHasEnabledCallbacksChangedCallback সরিয়ে ফেলুন। এর পরিবর্তে Dispatcher.onHasEnabledCallbacksChanged ব্যবহার করুন। ( Ida3e3 , b/436530096 )

বাগ সংশোধন

  • একটি বাগ সংশোধন করা হয়েছে যেখানে ইতিমধ্যে সংযুক্ত একটি হ্যান্ডলার যোগ করা বা অসংযুক্ত হ্যান্ডলার অপসারণ করার ফলে ভুল লাইফসাইকেল লজিক চালু হয়ে যাচ্ছিল। ( I9e47b )

সংস্করণ 1.0.0-alpha06

১৩ আগস্ট, ২০২৫

androidx.navigationevent:navigationevent-*:1.0.0-alpha06 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha06-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

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

প্যাসিভ লিসেনার এপিআই

এখন আপনি যেকোনো নেভিগেশন হোস্ট থেকে কাস্টম প্রাসঙ্গিক তথ্য পাঠাতে পারবেন এবং আপনার UI-এর যেকোনো জায়গা থেকে পরোক্ষভাবে জেসচার অবস্থার পরিবর্তন পর্যবেক্ষণ করতে পারবেন । এটি প্রেডিক্টিভ ব্যাক এবং অন্যান্য জেসচার-চালিত নেভিগেশনের জন্য কনটেক্সট-অ্যাওয়্যার অ্যানিমেশন সক্ষম করে।

এই বৈশিষ্ট্যটির দুটি অংশ রয়েছে:

  1. তথ্য প্রদান - নিজস্ব ডেটা বহন করার জন্য NavigationEventInfo ব্যবহার করুন।
  2. স্টেট ব্যবহার - জেসচারের অগ্রগতি এবং কনটেক্সট পর্যবেক্ষণ করতে dispatcher.state ( NavigationEventState ) ব্যবহার করুন।
  • NavigationEventCallback এখন এক কলে জেসচার কনটেক্সট সেট করার জন্য setInfo(currentInfo, previousInfo) মেথডটি প্রকাশ করেছে ( I1d5e7 , b/424470518 )।
  • NavigationEventHandler একটি নতুন ওভারলোড যোগ করেছে যা currentInfo এবং previousInfo গ্রহণ করে, যার ফলে এটি Compose অ্যাপে কনটেক্সট সরবরাহের জন্য প্রধান API-তে পরিণত হয়েছে ( I6ecd3 , b/424470518 )।

উদাহরণ:

  data class MyScreenInfo(val screenName: String) : NavigationEventInfo

  NavigationEventHandler(
      enabled = true,
      currentInfo = MyScreenInfo("Details Screen"),
      previousInfo = MyScreenInfo("Home Screen")
  ) { /* Handle back completion */ }
  • NavigationEventDispatcher এখন dispatcher.state এবং dispatcher.getState<T>() উন্মুক্ত করেছে ( If7fae , Ia90ca , b/424470518 )। এই StateFlow ভিত্তিক API-গুলো যেকোনো UI-কে সরাসরি ইভেন্টটি হ্যান্ডেল না করেই জেসচারের অগ্রগতি এবং প্রাসঙ্গিক ডেটা পর্যবেক্ষণ করতে দেয়।

উদাহরণ:

  val gestureState by LocalNavigationEventDispatcherOwner.current!!
      .navigationEventDispatcher
      .state
      .collectAsState()

  val progress = gestureState.progress // Returns latestEvent.progress or 0F

  when (val state = gestureState) {
      is InProgress -> {
          val toScreen = state.currentInfo as MyScreenInfo
          val fromScreen = state.previousInfo as MyScreenInfo
          println("Navigating from ${fromScreen.screenName} to ${toScreen.screenName}")
      }
      is Idle -> { /* Idle state */ }
  }
  • NavigationEventState ( I7b196 )-এ progress প্রপার্টি যোগ করুন যা ইভেন্ট চলাকালীন latestEvent.progress রিটার্ন করে, অন্যথায় 0F রিটার্ন করে:

    val progress = state.progress
    
  • স্তরক্রম অনুসারে NavigationEventDispatcher ইনস্ট্যান্স তৈরি, লিঙ্ক এবং ডিসপোজ করার জন্য NavigationEventDispatcherOwner কম্পোজেবলটি যোগ করুন। ডিসপ্যাচারের সক্রিয় অবস্থার ডায়নামিক নিয়ন্ত্রণ এবং স্বয়ংক্রিয় ক্লিনআপ সক্ষম করুন।

    @Composable
    fun Sample() {
        NavigationEventDispatcherOwner(enabled = true) {
            val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current
        }
    }
    

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

  • NavigationEventCallback থেকে isPassthrough প্যারামিটারটি সরিয়ে ফেলা হয়েছে। ( I99028 , b/424470518 )
  • NavigationEventState কনস্ট্রাক্টরগুলো এখন ইন্টারনাল। পরীক্ষার জন্য, DirectNavigationEventInputHandler এর মাধ্যমে স্টেট আপডেট করুন (ডিফল্ট হলো Idle )। স্টেটকে InProgress এ সেট করতে handleOnStarted বা handleOnProgressed কল করুন, এবং এটিকে Idle এ ফিরিয়ে আনতে handleOnCompleted বা handleOnCancelled কল করুন। NavigationEventInfo আপডেট করতে, NavigationEventCallback.setInfo ব্যবহার করুন। ( I93dca , b/424470518 )
  • সহজ ইনস্ট্যানসিয়েশন এবং টেস্টিং সরলীকরণের জন্য NavigationEvent এ ডিফল্ট প্যারামিটার যোগ করা হয়েছে, যা TestNavigationEvent এর পরিবর্তে ব্যবহার করা উচিত। ( I5dc49 , I232f4 )
  • নির্দিষ্ট বর্তমান/পূর্ববর্তী অবস্থা সহ নেভিগেশন ইভেন্ট পরীক্ষা করার জন্য একটি TestNavigationEventCallback যোগ করা হয়েছে। ( Idd22e , b/424470518 )
  • DirectNavigationEventInputHandler এ ( Iadde5 , Ifed40 I3897c , b/432616296 , b/435416924 ) পূর্ববর্তী AbstractNavigationEventInputHandler একটি ইমপ্লিমেন্টেশন দ্বারা প্রতিস্থাপন করার জন্য NavigationEventInputHandler একটি অ্যাবস্ট্রাক্ট ক্লাসে পরিণত করা হয়েছে।
  • NavigationEventInputHandler এর send* ফাংশনগুলোর প্রিফিক্স পরিবর্তন করে handle* রাখা হয়েছে। ( Iffcaf )
  • OnBackInvokedInputHandler এখন নতুন abstract NavigationInputHandler এক্সটেন্ড করে। ( Ib45aa )
  • NavigationEventDispatcherOwner পরিবর্তন করে এখন একটি প্যারেন্ট ডিসপ্যাচার আবশ্যক করা হয়েছে, যেখানে রুট ডিসপ্যাচার তৈরি করার জন্য আপনাকে অবশ্যই স্পষ্টভাবে null পাস করতে হবে। ( Ia6f64 , b/431534103 )

বাগ সংশোধন

  • NavigationEventDispatcher.dispose() -এ কালেকশন কপি পরিহার করে কার্যকারিতা উন্নত করা হয়েছে। ( I4ab09 )
  • একটি সমস্যার সমাধান করা হয়েছে যেখানে NavigationEventHandler তার enabled অবস্থার পরিবর্তনে সঠিকভাবে সাড়া দিচ্ছিল না। ( Ia5268 , I19bec , I5be5c , b/431534103 )

ডকস আপডেট

  • একটি সমন্বিত ইভেন্ট র‍্যাপার হিসেবে NavigationEvent এর ভূমিকা স্পষ্ট করতে এবং বিভিন্ন নেভিগেশন টাইপের (জেসচার, ক্লিক) ক্ষেত্রে এর প্রপার্টির আচরণ বিশদভাবে বর্ণনা করার জন্য KDocs-কে সম্প্রসারিত করা হয়েছে। ( I91e8d )
  • সিস্টেম ব্যাক হ্যান্ডলিং কম্পোজ এপিআই ( BackHandler , PredictiveBackHandler , NavigationEventHandler )-এর ডকুমেন্টেশন আপডেট করা হয়েছে, যাতে কলব্যাকের ক্রম সম্পর্কিত আচরণ বিশেষভাবে উল্লেখ করা যায়। ( I7ab94 )

নির্ভরতা আপডেট

  • NavigationEvent এখন Compose Runtime 1.9.0-beta03-এর উপর নির্ভরশীল, যা navigationevent-compose আর্টিফ্যাক্টকে সকল KMP টার্গেট সমর্থন করতে সক্ষম করে। ( Ia1b87 )

সংস্করণ 1.0.0-alpha05

৩০ জুলাই, ২০২৫

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

পিতা-মাতা-সন্তান সম্পর্ক সমর্থন:

একটি NavigationEventDispatcher এখন প্যারেন্ট এবং চাইল্ড ডিসপ্যাচার থাকতে পারে, যা একটি শ্রেণিবদ্ধ ট্রি কাঠামো তৈরি করে। এটি চেইনড ডিসপ্যাচারের মাধ্যমে UI-এর কাঠামোগত শ্রেণিবিন্যাস প্রতিফলিত করে, যার ফলে জটিল Compose 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

অধিকন্তু, NavigationEventCallback এর isEnabled প্রপার্টিটি এখন এর সংশ্লিষ্ট ডিসপ্যাচারের enabled অবস্থাকে সম্মান করে। এর মানে হলো, একটি কলব্যাককে তখনই enabled বলে গণ্য করা হবে, যখন কলব্যাকটি নিজে এবং এর ডিসপ্যাচার (এর পূর্বসূরিদের সহ) উভয়ই enabled থাকবে, যা কলব্যাক অ্যাক্টিভেশনের উপর সামঞ্জস্যপূর্ণ শ্রেণিবদ্ধ নিয়ন্ত্রণ নিশ্চিত করে। ( 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)
  }

দ্রষ্টব্য: আমরা aosp/3692572- এ একটি নতুন NavigationEventDispatcherOwner Composable চালু করব যা Compose 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 নিরাপত্তা উন্নত করতে NavigationEvent এর touchX , touchY , এবং progress ফিল্ডগুলিতে @FloatRange অ্যানোটেশন যোগ করুন। ( Iac0ec )

সংস্করণ 1.0.0-alpha04

২ জুলাই, ২০২৫

androidx.navigationevent:navigationevent-*:1.0.0-alpha04 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha04-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

বাগ সংশোধন

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

সংস্করণ 1.0.0-alpha03

১৮ জুন, ২০২৫

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

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

  • navigationevent লাইব্রেরিতে Jetpack Compose-এর বৈশিষ্ট্যগুলো সমর্থন করার জন্য একটি নতুন navigationevent-compose মডিউল চালু করা হয়েছে। ( 980d78 )
  • NavigationEvent Compose একটি নতুন LocalNavigationEventDispatcherOwner লোকাল কম্পোজিশন যোগ করেছে। এটি বর্তমান কম্পোজিশনে উপলব্ধ আছে কিনা তা আরও ভালোভাবে নির্ধারণ করার জন্য একটি নাল (null) ভ্যালু রিটার্ন করে। অন্তর্নিহিত মালিককে খুঁজে না পাওয়া গেলে NavigationEventHandler এখন একটি এরর (error) থ্রো করবে। ( 62ffda )
  • NavigationEvent Compose, (প্রিডিক্টিভ ব্যাক জেসচার) ইভেন্টগুলি পরিচালনা করার জন্য একটি নতুন NavigationEventHandler Composable যুক্ত করেছে। এটি 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 )
  • ন্যাভিগেশনের সময় পরিবর্তন রোধ করতে isPassThrough একটি val করা হয়েছে, যা NavigationEvent এর ডিসপ্যাচিং ভেঙে দিতে পারতো। ( I0b287 )

সংস্করণ 1.0.0-alpha02

৪ জুন, ২০২৫

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

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

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

বাগ সংশোধন

  • একই সাথে ক্লোজেবল-এর অভ্যন্তরীণ তালিকা পরিবর্তন করার কারণে NavigationEventCallback.remove() কল করার সময় যে ConcurrentModificationException দেখা দিতে পারতো, তা সংশোধন করা হয়েছে। ( b/420919815 )

সংস্করণ 1.0.0-alpha01

২০ মে, ২০২৫

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

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

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