Compose Runtime-এর গুরুত্বপূর্ণ API ও ফিচার
🎯 Compose Runtime-এর গুরুত্বপূর্ণ API ও ফিচার
✅ ১. mutableStateOf() → স্টেট ট্র্যাক করার জন্য
var count by mutableStateOf(0)
📌 এটি কী করে?
- এটি Compose Runtime-কে বলে দেয় যে,
countযখন পরিবর্তিত হবে, তখন সংশ্লিষ্ট UI অংশ আপডেট করতে হবে। - এটি Recomposition trigger করে শুধুমাত্র পরিবর্তিত অংশের জন্য।
✅ ২. remember() → রি-কম্পোজিশনের সময় স্টেট সংরক্ষণ করার জন্য
var count by remember { mutableStateOf(0) }
📌 এটি কী করে?
- যখন UI রি-কম্পোজ হয়, তখন আগের স্টেট ধরে রাখে।
- অন্যথায়, প্রতিবার কম্পোজিশন হলে
countআবার ০ হয়ে যেত!
✅ ৩. @Stable → পারফরম্যান্স বাড়ানোর জন্য
@Stable
class User(val name: String)
📌 এটি কী করে?
- Compose বুঝতে পারে
Userঅবজেক্টের কোন অংশ পরিবর্তন হবে, কোনটা হবে না। - অপ্রয়োজনীয় recomposition এড়ায়, ফলে UI স্মুথ থাকে!
✅ ৪. @Immutable → অপরিবর্তনশীল অবজেক্ট অপ্টিমাইজ করার জন্য
@Immutable
data class Product(val id: Int, val name: String)
📌 এটি কী করে?
Productকখনো পরিবর্তন হবে না, তাই Compose এটাকে দ্রুত প্রসেস করতে পারে!- Immutable Object → ফাস্ট রি-কম্পোজিশন
✅ ৫. derivedStateOf() → নির্ভরশীল স্টেট তৈরি করার জন্য
val isEven by derivedStateOf { count % 2 == 0 }
📌 এটি কী করে?
countযখন পরিবর্তন হবে, তখনইisEvenআপডেট হবে।countএকই থাকলে, অপ্রয়োজনীয় রি-কম্পোজিশন হবে না!
✅ ৬. snapshotFlow() → Compose State-কে Flow-তে রূপান্তর করার জন্য
val countFlow = snapshotFlow { count }
📌 এটি কী করে?
- Compose-এর State-কে Flow-তে রূপান্তর করে।
- এটি ব্যবহার করে State থেকে লাইভ API কল করা যায়!
✅ ৭. produceState() → Async স্টেট তৈরি করার জন্য
@Composable
fun fetchData(): State<String> {
return produceState(initialValue = "Loading...") {
delay(2000)
value = "Data Loaded!"
}
}
📌 এটি কী করে?
- এটি Compose-এর মধ্যে Async State ম্যানেজ করতে সাহায্য করে।
- ডেটা লোড হলে, UI আপডেট হবে।
✅ ৮. rememberUpdatedState() → Composable ফাংশনের লেটেস্ট স্টেট ধরে রাখার জন্য
@Composable
fun Timer(onTimeout: () -> Unit) {
val updatedOnTimeout by rememberUpdatedState(onTimeout)
LaunchedEffect(Unit) {
delay(5000)
updatedOnTimeout() // সর্বশেষ `onTimeout` ব্যবহার করবে
}
}
📌 এটি কী করে?
- যদি
onTimeoutফাংশন পরিবর্তিত হয়, তবে এটি লেটেস্ট রেফারেন্স ধরে রাখে।
✅ ৯. rememberCoroutineScope() → Coroutine চালানোর জন্য
@Composable
fun MyScreen() {
val scope = rememberCoroutineScope()
Button(onClick = {
scope.launch {
delay(1000)
println("Delayed Execution!")
}
}) {
Text("Start Coroutine")
}
}
📌 এটি কী করে?
- এটি Composable-এর লাইফসাইকেল-aware Coroutine চালানোর জন্য ব্যবহার করা হয়।
✅ 🔟 LaunchedEffect() → একবার রান করার জন্য
@Composable
fun Example() {
LaunchedEffect(Unit) {
delay(1000)
println("Runs only once!")
}
}
📌 এটি কী করে?
- Composable প্রথমবার রান হলে, এটি একবার চালানো হয়।
🎯 🔥 Compose Runtime - সংক্ষেপে
| API | কাজ |
|---|---|
mutableStateOf() |
State ট্র্যাক করে, পরিবর্তন হলে UI আপডেট করে |
remember() |
Recomposition এর পরেও স্টেট ধরে রাখে |
@Stable |
Compose বুঝতে পারে কোন Object অপ্টিমাইজ করা যাবে |
@Immutable |
Immutable data class হলে UI দ্রুত আপডেট হয় |
derivedStateOf() |
নির্ভরশীল state তৈরি করে, কম্পিউটেশন কমায় |
snapshotFlow() |
Compose state → Flow-তে রূপান্তর করে |
produceState() |
Async Data-কে State-এর মতো ম্যানেজ করে |
rememberUpdatedState() |
Composable-এর লেটেস্ট স্টেট ধরে রাখে |
rememberCoroutineScope() |
Coroutine চালানোর জন্য ব্যবহার হয় |
LaunchedEffect() |
Composable একবার রান হলে, Async কাজ চালায় |
🎬 শেষ কথা
🔹 mutableStateOf(), remember(), @Stable, @Immutable → Compose Runtime-এর মূল ভিত্তি!
🔹 derivedStateOf(), snapshotFlow(), produceState() → এডভান্সড স্টেট ম্যানেজমেন্ট
🔹 rememberCoroutineScope(), LaunchedEffect() → Coroutine ও Async কাজের জন্য দরকারি
📌 Compose Runtime-এর সাহায্যে UI স্মার্ট ও দ্রুত আপডেট হয়! 🚀🔥
💡 প্রশ্ন থাকলে জানাবেন! 😊
Comments
Post a Comment