নেভিগেশন ইভেন্ট
| সর্বশেষ আপডেট | স্থিতিশীল রিলিজ | প্রার্থী মুক্তি | বিটা রিলিজ | আলফা রিলিজ |
|---|---|---|---|---|
| 8 অক্টোবর, 2025 | - | - | 1.0.0-beta01 | - |
নির্ভরতা ঘোষণা করা
নেভিগেশন ইভেন্টের উপর নির্ভরতা যোগ করতে, আপনাকে অবশ্যই আপনার প্রকল্পে Google Maven সংগ্রহস্থল যোগ করতে হবে। আরও তথ্যের জন্য Google এর Maven সংগ্রহস্থল পড়ুন।
আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে আপনার প্রয়োজনীয় আর্টিফ্যাক্টগুলির জন্য নির্ভরতা যোগ করুন:
গ্রোভি
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-beta01" }
কোটলিন
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-beta01") }
নির্ভরতা সম্পর্কে আরও তথ্যের জন্য, বিল্ড নির্ভরতা যুক্ত করুন দেখুন।
প্রতিক্রিয়া
আপনার প্রতিক্রিয়া জেটপ্যাককে আরও ভাল করতে সাহায্য করে। আপনি যদি নতুন সমস্যা আবিষ্কার করেন বা এই লাইব্রেরির উন্নতির জন্য ধারনা পান তাহলে আমাদের জানান। আপনি একটি নতুন তৈরি করার আগে অনুগ্রহ করে এই লাইব্রেরিতে বিদ্যমান সমস্যাগুলি দেখুন৷ আপনি তারকা বোতামে ক্লিক করে একটি বিদ্যমান সমস্যায় আপনার ভোট যোগ করতে পারেন।
আরও তথ্যের জন্য ইস্যু ট্র্যাকার ডকুমেন্টেশন দেখুন।
এই শিল্পকর্মের জন্য কোন রিলিজ নোট নেই.
সংস্করণ 1.0
সংস্করণ 1.0.0-beta01
অক্টোবর 08, 2025
androidx.navigationevent:navigationevent-*:1.0.0-beta01 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-beta01-এ এই কমিট রয়েছে।
এপিআই পরিবর্তন
-
NavigationEvent.touchXএবংNavigationEvent.touchYএর জন্যFloatRangeটীকাটি সংশোধন করুন। এই মানগুলি নিখুঁত পিক্সেল স্থানাঙ্কের প্রতিনিধিত্ব করে এবং1.0উপরের বাউন্ড নেই। ( I4b205 , b/445989313 ) -
NavigationEventDispatcherOwnerrememberNavigationEventDispatcherOwnerজন্য কম্পোজযোগ্য NavigationEventDispatcherOwner রিফ্যাক্টর। ফাংশনটি এখন সরাসরিNavigationEventDispatcherOwnerফেরত দেয়। এই মালিককে একটি সাব-কম্পোজিশনে প্রদান করতে,CompositionLocalProviderব্যবহার করুন। ( I874b2 , b/444446629 )
সংস্করণ 1.0.0-alpha09
সেপ্টেম্বর 24, 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha09 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha09-এ এই কমিট রয়েছে।
এপিআই পরিবর্তন
-
Idle()ইনস্ট্যান্টিয়েট করার পরিবর্তে সরাসরিNavigationEventTransitionState.Idlesingleton অবজেক্ট ব্যবহার করুন। ( Ic7d9e , b/444734264 ) - সুবিধার কনস্ট্রাক্টর অভ্যন্তরীণ করুন; সরাসরি নির্মাণের পরিবর্তে সর্বজনীন
NavigationEventDispatcher.historyমাধ্যমে দৃষ্টান্তগুলি পান। ( I3b7e0 , b/444734264 ) -
rememberNavigationEventStateএর মাধ্যমেNavigationEventStateতৈরি করা প্রয়োজন; কনস্ট্রাক্টর এখন অভ্যন্তরীণ। ( IE143c , b/444734264 ) -
onBackCompletedFallbackঅবলম্বন করুনfallbackOnBackPressedব্যবহার এবং কনস্ট্রাক্টর প্যারামিটার প্রতিস্থাপন করুন। আচরণ অপরিবর্তিত; শুধুমাত্র সম্পূর্ণ, আন-হ্যান্ডেল ব্যাক ইভেন্টগুলিতে আহ্বান করা হয়েছে। ( Idabe9 , b/444734264 ) -
NavigationEventHistory(mergedHistory, currentIndex)এর প্রাথমিক কনস্ট্রাক্টর এখনinternal। বহিরাগত ভোক্তাদের অবশ্যই পাবলিক কনস্ট্রাক্টর (হয় খালি কনস্ট্রাক্টর বা পার্টিশন-ভিত্তিক কনস্ট্রাক্টর) ব্যবহার করতে হবে। ( I1c047 , b/444734264 ) -
View.setViewTreeNavigationEventDispatcherOwnerকে বাতিলযোগ্য মালিক গ্রহন করুন ( 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.historyStateFlowপ্রবর্তন করুন। এই নন-জেনারিক প্রবাহ পর্যবেক্ষকদের শুধুমাত্র নেভিগেশন স্ট্যাকের পরিবর্তনের জন্য সদস্যতা নিতে দেয় এবং অঙ্গভঙ্গি অগ্রগতির সময় স্থিতিশীল থাকে। এটিtransitionStateপ্রতিরূপ। ( I1db10 , b/444734264 ) - একটি নতুন বিশ্বব্যাপী
NavigationEventDispatcher.transitionStateStateFlowপ্রবর্তন করুন। এই নন-জেনারিক প্রবাহ পর্যবেক্ষকদের ইতিহাস থেকে পৃথক শুধুমাত্র শারীরিক অঙ্গভঙ্গি অবস্থা (আইডল/ইনপ্রগ্রেস) সাবস্ক্রাইব করতে দেয়। ( I171fa , b/444734264 ) -
NavigationEventHistoryStateক্লাসের পরিচয় দিন। এটি নেভিগেশন তথ্য ইতিহাস পর্যবেক্ষণ করার জন্য মূল API হিসাবে কাজ করবে, অঙ্গভঙ্গি অবস্থা থেকে আলাদা। ( I81ca5 , b/444734264 ) -
NavigationEventএখন@Immutableহিসেবে চিহ্নিত করা হয়েছে, কম্পোজ কম্পাইলারকে পুনর্গঠন অপ্টিমাইজ করার অনুমতি দেয়। ( if78c7 , b/444734264 ) -
navigationevent-composeহ্যান্ডলার API আপডেট করা হয়েছে।NavigationEventHandlerএবংNavigationBackHandler(এবং ভেরিয়েন্ট) এখন একটি নতুন ওভারলোড সমর্থন করে যা একটি উত্তোলিতNavigationEventStateগ্রহণ করে। সাধারণ ওভারলোডগুলি (currentInfoনেওয়া) সংরক্ষিত আছে এবং এখন এই নতুন স্টেট মডেলটি অভ্যন্তরীণভাবে ব্যবহার করুন৷ ( Ic3251 , b/444734264 ) -
navigationevent-composeলাইব্রেরিতে নতুন@StableNavigationEventState<T>স্টেট হোল্ডার যোগ করুন। এই অবজেক্টটি স্থানীয় ইতিহাসকে স্থানীয় অঙ্গভঙ্গি অবস্থার সাথে একত্রিত করে এবংrememberNavigationEventStateNavigationEventState এবংNavigationEventHandlerমধ্যে প্রাথমিক লিঙ্ক হবে। ( ifb69f , b/444734264 ) -
NavigationEventHandlerএ একটি নতুন সর্বজনীন, শুধুমাত্র পঠনযোগ্যtransitionState: TransitionStateসম্পত্তি যোগ করুন। হ্যান্ডলাররা এখন তাদের নিজস্ব রূপান্তর অবস্থা বজায় রাখে, যা বাহ্যিক সিস্টেমগুলি পর্যবেক্ষণ করতে পারে। ( I9acd2 , b/444734264 ) - নতুন
TransitionStateসিল করা ক্লাস প্রবর্তন করুন। এটি নেভিগেশন ইতিহাস থেকে পৃথক, অঙ্গভঙ্গি অবস্থা পর্যবেক্ষণের জন্য মূল API হিসাবে কাজ করবে। ( Id4beb , b/444734264 ) -
NavigationEventHandlercurrentInfo,backInfoএবংforwardInfoসর্বজনীন, শুধুমাত্র-পঠনযোগ্য বৈশিষ্ট্য হিসাবে প্রকাশ করুন। ( IA7636 , b/444734264 ) -
NavigationEventHandlerবাস্তবায়নের জন্য এখন বেস কনস্ট্রাক্টরকে একটিinitialInfo: Tমান প্রদান করতে হবে। ( Idcfea , b/444734264 ) -
OnBackInvokedInputOnBackInvokedOverlayInputবাOnBackInvokedDefaultInputদিয়ে প্রতিস্থাপন করুন। ( I5323f , b/428948766 ) -
NavigationEventState@Immutableহিসাবে চিহ্নিত করুন। কম্পোজেবল এই অবস্থা পর্যবেক্ষণ করে সঠিকভাবে পুনর্গঠন এড়িয়ে যেতে পারে তা নিশ্চিত করে এটি রচনা কর্মক্ষমতা উন্নত করে। ( I399c8 ) -
NavigationEventInfo.NotProvidedনাম পরিবর্তন করুন.NotProvided toNavigationEventInfo.None;রেফারেন্স আপডেট করুন। আচরণের কোন পরিবর্তন নেই। ( I5e2d4 ) -
NavigationEventInfoএখন@Immutableহিসাবে চিহ্নিত করা হয়েছে, কম্পোজ কম্পাইলারকে পুনর্গঠনগুলি অপ্টিমাইজ করার অনুমতি দেয়। ( I7c112 ) - ব্যাক কমপ্লিশন ফলব্যাকের জন্য মজাদার ইন্টারফেসের সাথে জাভা ergonomics উন্নত করুন। ( I8a860 )
-
onHasEnabledHandlerChangedonHasEnabledHandlersChangedএ পুনঃনামকরণ করুন। এটি স্পষ্ট করে যে কলব্যাক সমস্ত হ্যান্ডলারের সমষ্টিগত সক্ষমতার অবস্থার উপর রিপোর্ট করে, শুধুমাত্র একটি নয়। ( I1af61 , b/443711297 ) -
NavigationEventDispatcher;থেকেhasEnabledHandler()সরান; পরিবর্তেNavigationEventInput.onHasEnabledHandlersChangedব্যবহার করুন। ( IDef72 , b/443711297 ) - নেভিগেশন ইতিহাসে পরিবর্তনের শ্রোতাদের অবহিত করতে
NavigationEventInputএonInfoChangedকলব্যাক যোগ করুন। এটি বর্তমান, পিছনে এবং ফরোয়ার্ড স্ট্যাকের সম্পূর্ণ প্রসঙ্গ প্রদান করে, ইনপুটগুলিকে প্রাসঙ্গিক তথ্যে প্রতিক্রিয়া জানাতে সক্ষম করে। ( I69a8b , b/443282983 ) -
NavigationEventswipeEdgeএকটি@IntDefকরুন ( Icee54 , b/443950342 ) -
NavigationEventDispatcher.addInputএ একটিpriorityপরামিতি যোগ করুন একটি অগ্রাধিকারে একটি প্রেরণকারীকে সুযোগ দিতে;onHasEnabledCallbacksChangedএর মতো ইভেন্টগুলি এখন চালু হয় যখন সেই অগ্রাধিকারে কলব্যাকগুলি পরিবর্তন হয়। ( I3e488 , b/443711297 ) - স্পষ্টতার জন্য
parentDispatcherথেকে প্যারেন্টেNavigationEventDispatcherপ্যারামের নাম পরিবর্তন করুন। ( Id4f1f , b/443801782 ) - জাভা ব্যবহারকারীদের জন্য
@IntDefএর পক্ষেNavigationEventPriorityসরান ( I10a9f , b/440514265 ) - নেভিগেশন হ্যান্ডলার চুক্তি প্রয়োগ করুন। যদি আপনার
NavigationEventHandlerisBackEnabledবাisForwardEnabledtrueসেট করে, তাহলে আপনাকে এখন যথাক্রমেonBackCompletedবাonForwardCompletedওভাররাইড করতে হবে। ডিফল্ট বাস্তবায়ন এখন নীরব ব্যর্থতা প্রতিরোধ করার জন্য একটি ব্যতিক্রম নিক্ষেপ করে। ( I17c62 ) - নেভিগেশন ইভেন্ট হ্যান্ডলার যোগ করার সময় বৈধ অগ্রাধিকার মান প্রয়োগ করুন। একটি অসমর্থিত অগ্রাধিকার সহ
addHandlerকল করা এখন একটিIllegalArgumentExceptionনিক্ষেপ করবে, সমস্ত লক্ষ্য প্ল্যাটফর্ম জুড়ে ভুল ব্যবহারের জন্য অবিলম্বে প্রতিক্রিয়া প্রদান করবে। ( I3c474 )
বাগ ফিক্স
-
addHandlerদুর্বল করুন; ডুপ্লিকেট রেজিস্ট্রেশন উপেক্ষা করুন। ( I052aa , b/444734264 ) - পুনর্গঠনের সময়
NavigationEventStateবৈশিষ্ট্যগুলি সিঙ্কে রাখুন। ( Ib3b4d , b/444734264 ) - নিশ্চিত করুন
NavigationEventInputsনিবন্ধনের সাথে সাথেই বর্তমান প্রাসঙ্গিক তথ্য (বর্তমান, পিছনে, এগিয়ে) পেয়েছে। ( IE65bf , b/443282983 )
সংস্করণ 1.0.0-alpha08
10 সেপ্টেম্বর, 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha08 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha08-এ এই কমিট রয়েছে।
নতুন বৈশিষ্ট্য
- একটি ল্যাম্বডা-ভিত্তিক
NavigationEventHandlerAPI প্রবর্তন করুন যা ফ্লো-ভিত্তিক হ্যান্ডলার প্রতিস্থাপন করে। প্রবাহ সংগ্রহ, বয়লারপ্লেট হ্রাস এবং বাতিলকরণ সমস্যা এড়ানোর পরিবর্তে সাধারণ কলব্যাকগুলির সাথে পিছনে এবং এগিয়ে যাওয়ার অঙ্গভঙ্গিগুলি পরিচালনা করুন৷NavigationBackHandlerএবংNavigationForwardHandlerলক্ষ্যযুক্ত সুবিধার API হিসাবে সরবরাহ করুন। ফ্লো-ভিত্তিকNavigationEventHandlerসরান; নতুন কলব্যাকে স্থানান্তর করুন। ( I23bac , b/436248277 ) - প্যাসিভ শ্রোতাদের সম্মিলিত ব্যাক তথ্যের মাধ্যমে সম্পূর্ণ নেভিগেশন ব্যাক স্ট্যাক অ্যাক্সেস করার অনুমতি দিন। প্রিভিউ এবং নেস্টেড নেভিগেশন হিস্ট্রি রেন্ডার করতে UI গুলিকে টপ-মোস্ট কলব্যাকের মধ্যে সীমাবদ্ধ না করে সক্ষম করুন৷ ( I7a510 , b/436248277 )
- নেভিগেশন অবস্থা স্পষ্ট করতে এবং নেস্টেড হ্যান্ডলারের সাথে ফরোয়ার্ড নেভিগেশন সমর্থন করার জন্য একটি সুস্পষ্ট ব্যাক/কারেন্ট/ফরওয়ার্ড মডেল প্রবর্তন করুন। ( Ib86da , b/420443609 )
-
onForward*পদ্ধতি যোগ করুন এবংNavigationEventCallbackisForwardEnabled। ( IC100f , b/436248290 ) -
NavigationEventInputএ ফরওয়ার্ড নেভিগেশন সমর্থন যোগ করুন। ( I5734b )
এপিআই পরিবর্তন
-
TestNavigationEventCallbackএর মাধ্যমে ফরওয়ার্ড নেভিগেশন ইভেন্টগুলির পরীক্ষা সক্ষম করুন৷isForwardEnabledএবংonForward*হুক ব্যবহার করুন। ( I21fb5 , b/420443609 ) -
NavEventএonBack*এ onEventonEvent*কলব্যাকের নাম পরিবর্তন করুন। ( I228b3 , b/436248290 ) -
SwipeEdgeএকটি ইনলাইন ক্লাসে রূপান্তর করুন। ( Id5e01 ) -
navigationeventলাইব্রেরি জাভার সাথে ইন্টারঅপারেবল করুন। সমস্ত পাবলিক API এখন জাভা কোড থেকে সম্পূর্ণরূপে অ্যাক্সেসযোগ্য, মিশ্র-ভাষা বা জাভা-শুধুমাত্র প্রকল্পগুলিতে বিরামহীন একীকরণ সক্ষম করে। ( Ibc944 , I5465f , I9fb1e , b/440532890 b/443040294 ) -
NavigationEventCallbackকেNavigationEventHandlerএ নামকরণ করে API ভূমিকা স্পষ্ট করুন। এই পরিবর্তনটি মাল্টি-স্টেজ নেভিগেশন অঙ্গভঙ্গিগুলি পরিচালনা করার ক্লাসের উদ্দেশ্যকে আরও ভালভাবে প্রতিফলিত করে। সংশ্লিষ্টaddCallbackপদ্ধতিটি এখনaddHandler। ( I2492a , b/443040331 )
বাগ ফিক্স
- ফরোয়ার্ড নেভিগেশন চালানো থেকে ব্যাক ফলব্যাক প্রতিরোধ করুন। ( I74814 , b/436248290 )
- ভবিষ্যদ্বাণীমূলক ফরওয়ার্ড নেভিগেশন জন্য সমর্থন যোগ করুন.
NavigationEventAPIগুলি এখন পিছনে এবং সামনের উভয় অঙ্গভঙ্গি পরিচালনা করে, উভয় নেভিগেশন দিকনির্দেশের জন্য সামঞ্জস্যপূর্ণ অ্যানিমেশন সক্ষম করে। ( Idc98c , b/436248290 ) - একটি শিশু
NavigationEventDispatcherOwnerসরানো হলে পুনর্গঠনের সময় একটিIllegalStateExceptionক্র্যাশ প্রতিরোধ করুন। ( Iff50c , b/412629020 ) - প্যাসিভ শ্রোতারা এখন সম্মিলিত ব্যাক তথ্যের মাধ্যমে সম্পূর্ণ নেভিগেশন ব্যাক স্ট্যাক অ্যাক্সেস করতে পারে, যা UI-গুলিকে প্রিভিউ এবং নেস্টেড নেভিগেশন ইতিহাসকে শীর্ষস্থানীয় কলব্যাকের মধ্যে সীমাবদ্ধ না করে রেন্ডার করতে সক্ষম করে। ( I7a510 , b/436248277 )
সংস্করণ 1.0.0-alpha07
আগস্ট 27, 2025
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তৈরি করার সময় সক্রিয় করা হয়েছে। ( আইসি0188 ) -
NavigationEventInput.addOnHasEnabledCallbacksChangedCallbackNavigationEventInput.onHasEnabledCallbacksChangedদিয়ে প্রতিস্থাপন করুন। ( I64e93 ) -
NavigationEventDispatcher.addInputএর জন্য প্রধান থ্রেড প্রয়োজন। ( আইসি 2930 ) -
NavigationEventDispatcher.removeInputএর জন্য প্রধান থ্রেড প্রয়োজন। ( আইসি 2930 ) -
Dispatcher.addOnHasEnabledCallbacksChangedCallbackসরান।Dispatcher.onHasEnabledCallbacksChangedদিয়ে প্রতিস্থাপন করুন। ( Ida3e3 , b/436530096 )
বাগ ফিক্স
- বাগ ঠিক করুন যেখানে একটি ইতিমধ্যে-সংযুক্ত হ্যান্ডলার যোগ করা বা একটি সংযুক্ত না থাকাকে অপসারণ করা ভুল জীবনচক্র যুক্তিকে ট্রিগার করেছে৷ ( I9e47b )
সংস্করণ 1.0.0-alpha06
13 আগস্ট, 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha06 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha06-এ এই কমিট রয়েছে।
নতুন বৈশিষ্ট্য
প্যাসিভ লিসেনার এপিআই
আপনি এখন যেকোনো নেভিগেশন হোস্ট থেকে কাস্টম প্রাসঙ্গিক তথ্য পাস করতে পারেন এবং আপনার UI-এর যেকোনো জায়গা থেকে অঙ্গভঙ্গি অবস্থার পরিবর্তনগুলি নিষ্ক্রিয়ভাবে শুনতে পারেন । এটি পূর্বাভাসমূলক ব্যাক এবং অন্যান্য অঙ্গভঙ্গি-চালিত নেভিগেশনের জন্য প্রসঙ্গ-সচেতন অ্যানিমেশন সক্ষম করে।
এই বৈশিষ্ট্য দুটি অংশ আছে:
- তথ্য প্রদান - কাস্টম ডেটা বহন করতে
NavigationEventInfoব্যবহার করুন। - কনজিউমিং স্টেট - ইঙ্গিতের অগ্রগতি এবং প্রসঙ্গ পর্যবেক্ষণ করতে
dispatcher.state(NavigationEventState) ব্যবহার করুন৷
-
NavigationEventCallbackএখন একটি কলে অঙ্গভঙ্গি প্রসঙ্গ সেট করতেsetInfo(currentInfo, previousInfo)পদ্ধতি প্রকাশ করে ( I1d5e7 , b/424470518 )। -
NavigationEventHandlerএকটি নতুন ওভারলোড যোগ করে যাcurrentInfoএবংpreviousInfoগ্রহণ করে, এটিকে কম্পোজ অ্যাপস ( I6ecd3 , b/424470518 ) এ প্রসঙ্গ সরবরাহের জন্য প্রাথমিক API তৈরি করে।
উদাহরণ:
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.progressNavigationEventDispatcherOwnerকম্পোজেবল যোগ করুন যাNavigationEventDispatcherডিসপ্যাচার ইনস্ট্যান্সগুলিকে ক্রমানুসারে তৈরি করতে, লিঙ্ক করতে এবং নিষ্পত্তি করতে পারে। প্রেরণকারীর সক্রিয় অবস্থা এবং স্বয়ংক্রিয় পরিষ্কারের গতিশীল নিয়ন্ত্রণ সক্ষম করুন৷@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এখন নতুনabstractNavigationInputHandlerপ্রসারিত করেছে। ( Ib45aa ) - পরিবর্তিত
NavigationEventDispatcherOwnerএকটি অভিভাবক প্রেরক প্রয়োজন যেখানে আপনাকে একটি রুট প্রেরণকারী তৈরি করতে স্পষ্টভাবেnullপাস করতে হবে৷ ( IA6f64 , b/431534103 )
বাগ ফিক্স
-
NavigationEventDispatcher.dispose()এ সংগ্রহের অনুলিপিগুলি এড়ানোর মাধ্যমে দক্ষতা উন্নত করা হয়েছে। ( I4ab09 ) - একটি সমস্যা সমাধান করা হয়েছে যেখানে
NavigationEventHandlerতার সক্রিয় অবস্থায় পরিবর্তনের জন্য সঠিকভাবে সাড়া দেয়নি। ( Ia5268 , I19bec , I5be5c , b/431534103 )
ডক্স আপডেট
-
NavigationEventজন্য KDocs একটি ইউনিফাইড ইভেন্ট র্যাপার হিসাবে এর ভূমিকা স্পষ্ট করতে এবং বিভিন্ন নেভিগেশন প্রকার (ভঙ্গিমা, ক্লিক) জুড়ে বিশদ সম্পত্তি আচরণের জন্য প্রসারিত হয়েছে। ( I91e8d ) - সিস্টেম ব্যাক হ্যান্ডলিং কম্পোজ এপিআই (
BackHandler,PredictiveBackHandler,NavigationEventHandler) এর জন্য আপডেট করা ডকুমেন্টেশন বিশেষভাবে কলব্যাক অর্ডারের আশেপাশে আচরণ করার জন্য। ( I7ab94 , )
নির্ভরতা আপডেট
-
NavigationEventএখন কম্পোজ রানটাইম 1.9.0-beta03 এর উপর নির্ভর করে যাnavigationevent-composeআর্টিফ্যাক্টকে সমস্ত KMP লক্ষ্য সমর্থন করতে দেয়। ( IA1b87 )
সংস্করণ 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
তাছাড়া, NavigationEventCallback এ isEnabled প্রপার্টি এখন তার সংশ্লিষ্ট প্রেরকের সক্রিয় অবস্থাকে সম্মান করে। এর অর্থ হল একটি কলব্যাক সক্রিয় বলে বিবেচিত হয় শুধুমাত্র যদি কলব্যাক নিজেই এবং এর প্রেরণকারী (এর পূর্বপুরুষ সহ) উভয়ই সক্ষম থাকে, কলব্যাক অ্যাক্টিভেশনের উপর ধারাবাহিক স্তরবিন্যাস নিয়ন্ত্রণ নিশ্চিত করে৷ ( 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 কমন কোডে এটি উপলব্ধ করতে
NavigationEventInputHandlerandroidMainথেকে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
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 ) - নেভিগেশনের সময় মিউটেশন প্রতিরোধ করার জন্য একটি
valisPassThroughতৈরি করা হয়েছে, যা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 ফ্রেমওয়ার্কOnBackInvokedDispatcherAPIগুলি ব্যবহার করার জন্য একটি কম মতামতযুক্ত প্রতিস্থাপনের লক্ষ্য। অ্যাক্টিভিটি 1.12.0-alpha01- এর অংশ হিসেবেandroidx.activityAPI গুলিকে নেভিগেশন ইভেন্ট API-এর উপরে আবার লেখা হয়েছে।