কম্পোজিশন ট্রি জুড়ে ফোকাস পরিবর্তন হওয়ার সময়, Compose একটি ফোকাস ইভেন্ট
ট্রিগার করে যা পেরেন্ট ও চাইল্ড মডিফায়ার লক্ষ্য করতে পারে। আপনি
onFocusChanged মডিফায়ার ব্যবহার করে ফোকাস স্টেট ট্রানজিশন শুনতে, বর্তমান ফোকাস প্রপার্টি কোয়েরি করতে
এবং স্টেট-চালিত UI আপডেট ট্রিগার করতে পারবেন।
onFocusChanged-এর মাধ্যমে ফোকাস স্টেট লক্ষ্য করুন
onFocusChanged মডিফায়ার একটি FocusState অবজেক্ট প্রদান করে যখনই কোনও
এলিমেন্ট ফোকাস পায় বা হারায়।
যেমন, কাস্টম কম্পোনেন্টের স্ট্যাটাস আপডেট করার জন্য আপনি ফোকাস পরিবর্তন লক্ষ্য করতে পারেন (যেমন, কোনও এলিমেন্টের বর্ডার কালার পরিবর্তন করা বা অ্যানিমেশন ট্রিগার করা):
var color by remember { mutableStateOf(Color.White) } Card( modifier = Modifier .onFocusChanged { color = if (it.isFocused) Red else White } .border(5.dp, color) ) {}
এই উদাহরণে, remember রিকম্পোজিশন জুড়ে বর্ডার কালার স্টোর করে এবং
এলিমেন্টের ফোকাস স্টেট ট্রানজিশন হলেই বর্ডার কালার আপডেট হয়।
FocusState প্রপার্টি
onFocusChanged-এ পাস করা FocusState অবজেক্ট তিনটি মূল
প্রপার্টি প্রদান করে:
isFocused: এই মডিফায়ার যে নির্দিষ্ট কম্পোজেবলের সাথে অ্যাটাচ করা আছে, সেটি বর্তমানে অ্যাক্টিভ ইনপুট ফোকাস হোল্ড করলে,trueরিটার্ন করে।hasFocus: এই কম্পোজেবল বা এর কোনও চাইল্ড কম্পোজেবলে বর্তমানে ফোকাস থাকলেtrueরিটার্ন করে। এটি পেরেন্ট কন্টেনারের (যেমন কার্ড বা টুলবার) জন্য উপযোগী যেগুলি জানতে চায় যে তাদের মধ্যে কোনও চাইল্ড অ্যাক্টিভ আছে কিনা।isCaptured: ফোকাস বর্তমানে এলিমেন্টে লক করা থাকলেtrueরিটার্ন করে (যেমন,captureFocus()ব্যবহার করে মোডাল সাব-ইন্টার্যাকশনের সময়)। ক্যাপচার করার সময়, ফোকাস অন্য এলিমেন্টে সরানোর চেষ্টা করলে ফোকাস মুছে যায় না।
Modifier.onFocusChanged { focusState ->
val isFocused = focusState.isFocused
val hasFocus = focusState.hasFocus
val isCaptured = focusState.isCaptured
}
আপনার জন্য সাজেস্ট করা হয়েছে
- মনে রাখবেন: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট দেখানো হয়
- ফোকাস টার্গেট
- ফোকাসড মোড নির্দেশ করুন
- প্রোগ্রামাটিক্যালি ফোকাসের অনুরোধ করুন
- ফোকাস ক্যাপচার ও রিলিজ করা