নেভিগেশন ইভেন্ট
| সর্বশেষ আপডেট | স্থিতিশীল রিলিজ | রিলিজ প্রার্থী | বিটা রিলিজ | আলফা রিলিজ |
|---|---|---|---|---|
| ৫ নভেম্বর, ২০২৫ | - | ১.০.০-rc01 সম্পর্কে | - | - |
নির্ভরতা ঘোষণা করা
নেভিগেশনইভেন্টের উপর নির্ভরতা যোগ করতে, আপনার প্রোজেক্টে গুগল ম্যাভেন রিপোজিটরি যোগ করতে হবে। আরও তথ্যের জন্য গুগলের ম্যাভেন রিপোজিটরি পড়ুন।
আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে আপনার প্রয়োজনীয় আর্টিফ্যাক্টের জন্য নির্ভরতা যোগ করুন:
গ্রোভি
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-rc01" }
কোটলিন
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-rc01") }
নির্ভরতা সম্পর্কে আরও তথ্যের জন্য, বিল্ড নির্ভরতা যোগ করুন দেখুন।
প্রতিক্রিয়া
আপনার মতামত জেটপ্যাককে আরও উন্নত করতে সাহায্য করবে। আপনি যদি নতুন সমস্যা আবিষ্কার করেন বা এই লাইব্রেরিটি উন্নত করার জন্য কোন ধারণা থাকে তাহলে আমাদের জানান। নতুন একটি তৈরি করার আগে দয়া করে এই লাইব্রেরিতে বিদ্যমান সমস্যাগুলি একবার দেখে নিন। আপনি তারকা বোতামে ক্লিক করে বিদ্যমান সমস্যাটিতে আপনার ভোট যোগ করতে পারেন।
আরও তথ্যের জন্য ইস্যু ট্র্যাকার ডকুমেন্টেশন দেখুন।
এই নিদর্শনটির জন্য কোনও রিলিজ নোট নেই।
সংস্করণ 1.0
সংস্করণ 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-এ এই কমিটগুলি রয়েছে।
API পরিবর্তনগুলি
-
NavigationEvent.touchXএবংNavigationEvent.touchYজন্যFloatRangeঅ্যানোটেশনটি সংশোধন করুন। এই মানগুলি পরম পিক্সেল স্থানাঙ্ক উপস্থাপন করে এবং এর1.0উপরের সীমা নেই। ( I4b205 , b/445989313 ) -
rememberNavigationEventDispatcherOwnerএর সাথে সামঞ্জস্যপূর্ণNavigationEventDispatcherOwnerরিফ্যাক্টর করুন। ফাংশনটি এখন সরাসরিNavigationEventDispatcherOwnerরিটার্ন করে। এই মালিককে একটি সাব-কম্পোজিশনে প্রদান করতে,CompositionLocalProviderব্যবহার করুন। ( I874b2 , b/444446629 )
সংস্করণ 1.0.0-alpha09
২৪ সেপ্টেম্বর, ২০২৫
androidx.navigationevent:navigationevent-*:1.0.0-alpha09 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha09-এ এই কমিটগুলি রয়েছে।
API পরিবর্তনগুলি
-
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(gesture progress এর জন্য) এবংdispatcher.history(নেভিগেশন স্ট্যাকের জন্য) ফ্লো ব্যবহার করুন। ( Ic2ceb , b/444734264 ) -
NavigationEventInput.onInfoChanged(...)কলব্যাকটি প্রতিস্থাপন করা হয়েছে। একটি এককNavigationEventHistoryঅবজেক্ট হিসেবে আপডেট পেতে নতুনonHistoryChanged(history: NavigationEventHistory)কলব্যাকটি বাস্তবায়ন করুন। ( I23e0b , b/444734264 ) - একটি নতুন গ্লোবাল
NavigationEventDispatcher.historyStateFlowপ্রবর্তন করুন। এই নন-জেনেরিক ফ্লো পর্যবেক্ষকদের কেবল নেভিগেশন স্ট্যাকের পরিবর্তনগুলিতে সাবস্ক্রাইব করার অনুমতি দেয় এবং অঙ্গভঙ্গি অগ্রগতির সময় স্থিতিশীল থাকে। এটিtransitionStateএর প্রতিরূপ। ( I1db10 , b/444734264 ) - একটি নতুন গ্লোবাল
NavigationEventDispatcher.transitionStateStateFlowপ্রবর্তন করুন। এই নন-জেনেরিক ফ্লো পর্যবেক্ষকদের ইতিহাস থেকে আলাদা করে শুধুমাত্র ভৌত অঙ্গভঙ্গি অবস্থা (Idle/InProgress) সাবস্ক্রাইব করতে দেয়। ( I171fa , b/444734264 ) -
NavigationEventHistoryStateক্লাসটি চালু করুন। এটি অঙ্গভঙ্গি অবস্থা থেকে আলাদা করে নেভিগেশন তথ্য ইতিহাস পর্যবেক্ষণের জন্য মূল API হিসেবে কাজ করবে। ( I81ca5 , b/444734264 ) -
NavigationEventএখন@Immutableহিসেবে চিহ্নিত, যা Compose Compiler কে রিকম্পোজিশন অপ্টিমাইজ করার অনুমতি দেয়। ( If78c7 , b/444734264 ) -
navigationevent-composeহ্যান্ডলার API গুলি আপডেট করা হয়েছে।NavigationEventHandlerএবংNavigationBackHandler(এবং ভেরিয়েন্ট) এখন একটি নতুন ওভারলোড সমর্থন করে যা একটি উত্তোলিতNavigationEventStates গ্রহণ করে। সরল ওভারলোডগুলি (currentInfoগ্রহণ) সংরক্ষিত আছে এবং এখন অভ্যন্তরীণভাবে এই নতুন স্টেট মডেলটি ব্যবহার করে। ( Ic3251 , b/444734264 ) -
navigationevent-composeলাইব্রেরিতে নতুন@StableNavigationEventState<T>স্টেট হোল্ডার যোগ করুন। এই অবজেক্টটি স্থানীয় ইতিহাসকে স্থানীয় অঙ্গভঙ্গির অবস্থার সাথে একত্রিত করে এবংrememberNavigationEventStateএবংNavigationEventHandlerমধ্যে প্রাথমিক লিঙ্ক হবে। ( Ifb69f , b/444734264 ) -
NavigationEventHandlerএ একটি নতুন পাবলিক, রিড-ওনলিtransitionState: TransitionStateপ্রোপার্টি যোগ করুন। হ্যান্ডলাররা এখন তাদের নিজস্ব ট্রানজিশন অবস্থা বজায় রাখে, যা বহিরাগত সিস্টেমগুলি পর্যবেক্ষণ করতে পারে। ( I9acd2 , b/444734264 ) - নতুন
TransitionStateসিলড ক্লাস চালু করুন। এটি নেভিগেশন ইতিহাস থেকে আলাদাভাবে জেসচার স্টেট পর্যবেক্ষণের জন্য মূল API হিসেবে কাজ করবে। ( Id4beb , b/444734264 ) -
NavigationEventHandlerএcurrentInfo,backInfo, এবংforwardInfoপাবলিক, রিড-ওনলি প্রোপার্টি হিসেবে প্রকাশ করুন। ( Ia7636 , b/444734264 ) -
NavigationEventHandlerএর বাস্তবায়নের জন্য এখন বেস কনস্ট্রাক্টরে একটিinitialInfo: Tমান প্রদান করতে হবে। ( Idcfea , b/444734264 ) -
OnBackInvokedInputOnBackInvokedOverlayInputঅথবাOnBackInvokedDefaultInputদিয়ে প্রতিস্থাপন করুন। ( I5323f , b/428948766 ) -
NavigationEventStateকে@Immutableহিসেবে চিহ্নিত করুন। এটি কম্পোজের কর্মক্ষমতা উন্নত করে নিশ্চিত করে যে এই অবস্থা পর্যবেক্ষণকারী কম্পোজেবলরা সঠিকভাবে রিকম্পোজিশন এড়িয়ে যেতে পারে। ( I399c8 ) -
NavigationEventInfo.NotProvidedএর নাম পরিবর্তন করেNavigationEventInfo.None;রেফারেন্স আপডেট করুন। কোনও আচরণ পরিবর্তন হয়নি। ( I5e2d4 ) -
NavigationEventInfoএখন@Immutableহিসেবে চিহ্নিত, যা Compose Compiler কে রিকম্পোজিশন অপ্টিমাইজ করার অনুমতি দেয়। ( I7c112 ) - ব্যাক কমপ্লিশন ফলব্যাকের জন্য মজাদার ইন্টারফেস সহ জাভা এরগনোমিক্স উন্নত করুন। ( I8a860 )
-
onHasEnabledHandlerChangedএর নাম পরিবর্তন করেonHasEnabledHandlersChangedকরুন। এটি স্পষ্ট করে যে কলব্যাক শুধুমাত্র একজনের নয়, সমস্ত হ্যান্ডলারের সম্মিলিত সক্ষমতার অবস্থা সম্পর্কে রিপোর্ট করে। ( I1af61 , b/443711297 ) -
NavigationEventDispatcher;থেকেhasEnabledHandler()সরান; পরিবর্তেNavigationEventInput.onHasEnabledHandlersChangedব্যবহার করুন। ( Idef72 , b/443711297 ) - নেভিগেশন ইতিহাসের পরিবর্তন সম্পর্কে শ্রোতাদের অবহিত করার জন্য
NavigationEventInputএonInfoChangedকলব্যাক যোগ করুন। এটি বর্তমান, পিছনে এবং এগিয়ে থাকা স্ট্যাকের সম্পূর্ণ প্রসঙ্গ প্রদান করে, যা ইনপুটগুলিকে প্রাসঙ্গিক তথ্যের প্রতি প্রতিক্রিয়া জানাতে সক্ষম করে। ( 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 ) - নেভিগেশন হ্যান্ডলার চুক্তি প্রয়োগ করুন। যদি আপনার
NavigationEventHandlerisBackEnabledঅথবাisForwardEnabledtrueতে সেট করে, তাহলে আপনাকে এখন যথাক্রমে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-এ এই কমিটগুলি রয়েছে।
নতুন বৈশিষ্ট্য
- একটি ল্যাম্বডা-ভিত্তিক
NavigationEventHandlerAPI চালু করুন যা Flow-ভিত্তিক হ্যান্ডলারের পরিবর্তে কাজ করে। ফ্লো সংগ্রহের পরিবর্তে সহজ কলব্যাক দিয়ে ব্যাক এবং ফরোয়ার্ড জেসচার পরিচালনা করুন, বয়লারপ্লেট হ্রাস করুন এবং বাতিলকরণের সমস্যা এড়ান। লক্ষ্যযুক্ত সুবিধা API হিসাবেNavigationBackHandlerএবংNavigationForwardHandlerপ্রদান করুন। Flow-ভিত্তিকNavigationEventHandlerসরান; নতুন কলব্যাকগুলিতে স্থানান্তর করুন। ( I23bac , b/436248277 ) - প্যাসিভ লিসেনারের জন্য সম্মিলিত ব্যাক তথ্যের মাধ্যমে সম্পূর্ণ নেভিগেশন ব্যাক স্ট্যাক অ্যাক্সেস করার অনুমতি দিন। সর্বাধিক কলব্যাকের মধ্যে সীমাবদ্ধ না থেকে প্রিভিউ এবং নেস্টেড নেভিগেশন ইতিহাস রেন্ডার করার জন্য UI গুলিকে সক্ষম করুন। ( I7a510 , b/436248277 )
- নেস্টেড হ্যান্ডলারের সাহায্যে নেভিগেশন অবস্থা স্পষ্ট করতে এবং ফরোয়ার্ড নেভিগেশন সমর্থন করার জন্য একটি স্পষ্ট ব্যাক/কারেন্ট/ফরোয়ার্ড মডেল প্রবর্তন করুন। ( Ib86da , b/420443609 )
-
onForward*পদ্ধতি যোগ করুন এবংNavigationEventCallbackএisForwardEnabled। ( Ic100f , b/436248290 ) -
NavigationEventInputএ ফরোয়ার্ড নেভিগেশন সাপোর্ট যোগ করুন। ( I5734b )
API পরিবর্তনগুলি
-
TestNavigationEventCallbackদিয়ে ফরোয়ার্ড নেভিগেশন ইভেন্টের পরীক্ষা সক্ষম করুন।isForwardEnabledএবংonForward*হুক ব্যবহার করুন। ( I21fb5 , b/420443609 ) -
NavEventএonEvent*কলব্যাকের নাম পরিবর্তন করেonBack*করুন। ( 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
২৭ আগস্ট, ২০২৫
androidx.navigationevent:navigationevent-*:1.0.0-alpha07 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha07-এ এই কমিটগুলি রয়েছে।
API পরিবর্তনগুলি
-
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.addOnHasEnabledCallbacksChangedCallbackNavigationEventInput.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 এর যেকোনো স্থান থেকে অঙ্গভঙ্গির অবস্থার পরিবর্তনগুলি নিষ্ক্রিয়ভাবে শুনতে পারবেন । এটি ভবিষ্যদ্বাণীমূলক ব্যাক এবং অন্যান্য অঙ্গভঙ্গি-চালিত নেভিগেশনের জন্য প্রসঙ্গ-সচেতন অ্যানিমেশন সক্ষম করে।
এই বৈশিষ্ট্যটির দুটি অংশ রয়েছে:
- তথ্য প্রদান - কাস্টম ডেটা বহন করতে
NavigationEventInfoব্যবহার করুন। - কনজিউমিং স্টেট - অঙ্গভঙ্গির অগ্রগতি এবং প্রসঙ্গ পর্যবেক্ষণ করতে
dispatcher.state(NavigationEventState) ব্যবহার করুন।
-
NavigationEventCallbackএখনsetInfo(currentInfo, previousInfo)পদ্ধতি ব্যবহার করে একটি কলে ( I1d5e7 , b/424470518 ) অঙ্গভঙ্গির প্রসঙ্গ সেট করা যায়। -
NavigationEventHandlerএকটি নতুন ওভারলোড যোগ করে যাcurrentInfoএবংpreviousInfoগ্রহণ করে, যা এটিকে Compose অ্যাপে ( 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.progressNavigationEventDispatcherইনস্ট্যান্সগুলিকে হায়ারার্কিকালভাবে তৈরি, লিঙ্ক এবং নিষ্পত্তি করার জন্য কম্পোজেবলNavigationEventDispatcherOwnerযোগ করুন। ডিসপ্যাচারের সক্রিয় অবস্থার গতিশীল নিয়ন্ত্রণ এবং স্বয়ংক্রিয় পরিষ্কার সক্ষম করুন।@Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
API পরিবর্তনগুলি
-
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 ) -
NavigationEventInputHandlerএকটি abstract ক্লাসে পরিণত করা হয়েছে যাতে পূর্ববর্তীAbstractNavigationEventInputHandlerDirectNavigationEventInputHandler( Iadde5 , Ifed40 I3897c , b/432616296 , b/435416924 ) এ একটি বাস্তবায়নের মাধ্যমে প্রতিস্থাপন করা যায়। -
NavigationEventInputHandlerএsend*ফাংশনগুলির উপসর্গগুলির নাম পরিবর্তন করেhandle*করা হয়েছে। ( Iffcaf ) -
OnBackInvokedInputHandlerএখন নতুনabstractNavigationInputHandlerপ্রসারিত করে। ( Ib45aa ) -
NavigationEventDispatcherOwnerএকটি প্যারেন্ট ডিসপ্যাচারের জন্য পরিবর্তন করা হয়েছে যেখানে আপনাকে একটি রুট ডিসপ্যাচার তৈরি করতে স্পষ্টভাবেnullপাস করতে হবে। ( Ia6f64 , b/431534103 )
বাগ ফিক্স
-
NavigationEventDispatcher.dispose()এ সংগ্রহের কপি এড়িয়ে দক্ষতা উন্নত করা হয়েছে। ( I4ab09 ) -
NavigationEventHandlerতার সক্রিয় অবস্থায় পরিবর্তনের ক্ষেত্রে সঠিকভাবে সাড়া না দেওয়ার ক্ষেত্রে একটি সমস্যা সমাধান করা হয়েছে। ( Ia5268 , I19bec , I5be5c , b/431534103 )
ডক্স আপডেট
- KDocs for
NavigationEventসম্প্রসারিত হয়েছে যাতে এটি একটি ইউনিফাইড ইভেন্ট র্যাপার হিসেবে এর ভূমিকা স্পষ্ট করে এবং বিভিন্ন ধরণের নেভিগেশন (অঙ্গভঙ্গি, ক্লিক) জুড়ে সম্পত্তির আচরণের বিস্তারিত বর্ণনা প্রদান করা হয়েছে। ( I91e8d ) - সিস্টেম ব্যাক হ্যান্ডলিং কম্পোজ API (
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-এর স্ট্রাকচারাল হাইয়ারিটি প্রতিফলিত করে জটিল কম্পোজ 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 তে Compose UI এর মধ্যে একটি চাইল্ড ডিসপ্যাচারকে স্বয়ংক্রিয়ভাবে পরিচালনা করবে। তবে, এই পরিবর্তনটি বর্তমান রিলিজ কাটে অন্তর্ভুক্ত হয়নি এবং পরবর্তীটির জন্য পরিকল্পনা করা হয়েছে।
নেভিগেশন টেস্টিং লাইব্রেরি
-
navigationeventলাইব্রেরির জন্য ডেডিকেটেড টেস্টিং ইউটিলিটি প্রদানের জন্যnavigationevent-testingমডিউল যোগ করুন। ( 0e50b6 ) - পরীক্ষার জন্য
TestNavigationEventCallbackজাল ইউটিলিটি ক্লাস যোগ করুন। এটি কলব্যাক পদ্ধতির কল রেকর্ড করে এবং যাচাইকরণ সমর্থন করার জন্য প্রাপ্তNavigationEventআইটেমগুলি সংরক্ষণ করে। ( 4a0246 ) - নেভিগেশন ইভেন্ট প্রক্রিয়াকরণের জন্য ইউনিট পরীক্ষা সহজ করে, ডিফল্ট মান সহ
NavigationEventইনস্ট্যান্স তৈরি করতেTestNavigationEventজাল ইউটিলিটি ফাংশন যোগ করুন। ( 3b63f5 ) - পরীক্ষার জন্য
TestNavigationEventDispatcherOwnerজাল ইউটিলিটি ক্লাস যোগ করুন। এটি পরীক্ষায় ইন্টারঅ্যাকশন যাচাইকরণ সমর্থন করার জন্য ফলব্যাক এবং সক্রিয়-অবস্থা-পরিবর্তিত ইভেন্ট গণনা ট্র্যাক করে। ( c8753e )
API পরিবর্তনগুলি
- 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
২ জুলাই, ২০২৫
androidx.navigationevent:navigationevent-*:1.0.0-alpha04 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha04-এ এই কমিটগুলি রয়েছে।
বাগ ফিক্স
-
navigationevent-composeimplementedInJetBrainsForkব্যবহার করা হয়েছে এবং Compose কনভেনশনের সাথে মেলে একটিcommonStubsটার্গেট যোগ করা হয়েছে। JetBrains দ্বারা পরিবর্তনের অনুরোধ করা হয়েছে । ( f60c79 ) - সঠিক স্টাব জেনারেশন নিশ্চিত করার জন্য কোটলিন/নেটিভের জন্য কম্পোজ কম্পাইলার প্লাগইনের স্থির প্রয়োগ। পাবলিক API বা আচরণের উপর কোনও প্রভাব পড়বে না। ( 1890c9 )
সংস্করণ 1.0.0-alpha03
১৮ জুন, ২০২৫
androidx.navigationevent:navigationevent-*:1.0.0-alpha03 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha03-এ এই কমিটগুলি রয়েছে।
নতুন বৈশিষ্ট্য
-
navigationeventলাইব্রেরিতে জেটপ্যাক কম্পোজ বৈশিষ্ট্যগুলিকে সমর্থন করার জন্য একটি নতুনnavigationevent-composeমডিউল চালু করা হয়েছে। ( 980d78 ) -
NavigationEventCompose একটি নতুনLocalNavigationEventDispatcherOwnerস্থানীয় রচনা যোগ করেছে। এটি বর্তমান রচনায় উপলব্ধ কিনা তা আরও ভালভাবে নির্ধারণ করার জন্য একটি বাতিলযোগ্য মান প্রদান করে। অন্তর্নিহিত মালিক খুঁজে না পেলেNavigationEventHandlerএখন একটি ত্রুটি নিক্ষেপ করবে। ( 62ffda ) -
NavigationEventCompose (পূর্বাভাসমূলক ব্যাক জেসচার) ইভেন্টগুলি পরিচালনা করার জন্য একটি নতুনNavigationEventHandlerComposable যোগ করেছে। এটি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 } } API পরিবর্তনগুলি
- প্রতিটি
NavigationEventCallbackএখন একবারে শুধুমাত্র একটিNavigationEventDispatcherদিয়ে নিবন্ধিত হতে পারে; এটি একাধিক dispatcher-এ যোগ করলে একটিIllegalStateExceptionতৈরি হয়। মনে রাখবেন যে এই আচরণটিOnBackPressedDispatcherথেকে আলাদা, যা একাধিক dispatcher-এর অনুমতি দেয়। ( e82c19 ) - নেভিগেশনের সময় মিউটেশন রোধ করার জন্য
isPassThroughএকটিvalতৈরি করা হয়েছে, যাNavigationEventএর ডিসপ্যাচিং ভেঙে দিতে পারে। ( I0b287 )
সংস্করণ 1.0.0-alpha02
৪ জুন, ২০২৫
androidx.navigationevent:navigationevent-*:1.0.0-alpha02 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha02-এ এই কমিটগুলি রয়েছে।
API পরিবর্তনগুলি
-
NavigationEventDispatcherএর সেকেন্ডারি কনস্ট্রাক্টরকে ডিফল্ট আর্গুমেন্ট দিয়ে প্রতিস্থাপন করুন। ( I716a0 ) -
NavigationEventCallbackথেকে অগ্রাধিকার সম্পত্তি সরান। পরিবর্তেNavigationEventDispatcher.addCallback()এ অগ্রাধিকার দিন। ( I13cae )
বাগ ফিক্স
-
NavigationEventCallback.remove()কল করার সময় ক্লোজেবলের অভ্যন্তরীণ তালিকা একই সাথে পরিবর্তন করার কারণে যেConcurrentModificationExceptionঘটতে পারে তা ঠিক করা হয়েছে। ( b/420919815 )
সংস্করণ 1.0.0-alpha01
২০ মে, ২০২৫
androidx.navigationevent:navigationevent-*:1.0.0-alpha01 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha01-এ এই কমিটগুলি রয়েছে।
নতুন বৈশিষ্ট্য
-
androidx.navigationeventলাইব্রেরি সিস্টেম ব্যাক এবং প্রেডিক্টিভ ব্যাক হ্যান্ডেল করার জন্য একটি KMP-first API প্রদান করে।NavigationEventDispatcherসিস্টেম ব্যাক ইভেন্ট গ্রহণের জন্য এক বা একাধিকNavigationEventCallbackইনস্ট্যান্স নিবন্ধনের জন্য একটি সাধারণ API হিসেবে কাজ করে। - এই স্তরটি
androidx.activityতে পূর্বে প্রকাশিত API-গুলির নীচে অবস্থিত এবং উচ্চ স্তরের উপাদানগুলিতে Activity API-গুলি ব্যবহার করার জন্য অথবা সরাসরি Android ফ্রেমওয়ার্কOnBackInvokedDispatcherAPI-গুলি ব্যবহার করার জন্য একটি কম মতামতযুক্ত প্রতিস্থাপন হিসাবে লক্ষ্য করা হয়।androidx.activityAPI-গুলি Activity 1.12.0-alpha01 এর অংশ হিসাবে Navigation Event API-গুলির উপরে পুনর্লিখন করা হয়েছে।