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, @ImmutableCompose Runtime-এর মূল ভিত্তি!
🔹 derivedStateOf(), snapshotFlow(), produceState()এডভান্সড স্টেট ম্যানেজমেন্ট
🔹 rememberCoroutineScope(), LaunchedEffect()Coroutine ও Async কাজের জন্য দরকারি

📌 Compose Runtime-এর সাহায্যে UI স্মার্ট ও দ্রুত আপডেট হয়! 🚀🔥


💡 প্রশ্ন থাকলে জানাবেন! 😊

Comments

Popular posts from this blog

AI (Artificial Intelligence) সহজভাবে বোঝার জন্য একদম মস্তিষ্ক-বান্ধব ব্যাখ্যা 🧠🤖

🧠 Regex কী?

Kotlin-এ ভেরিয়েবল ঘোষণা করার দুই উপায়