AppState   Android Jetpack-এর অংশ।

Jetpack AppState হল লাইব্রেরির একটি গ্রুপ যা আপনাকে UI লেয়ারের বাইরে Jetpack Compose State এক্সটেন্ড করতে সাহায্য করে যাতে আপনি আপনার অ্যাপের যেকোনও লেয়ার জুড়ে রিঅ্যাক্টিভ স্টেট ট্রান্সফর্ম ও শেয়ার করতে পারেন। AppState-এ দুটি প্রধান লাইব্রেরি রয়েছে:

  • Transform: Compose রানটাইমে তৈরি একটি লাইব্রেরি যা UI ছাড়াই @Composable ব্লক রান করে যাতে স্টেট সোর্সকে Compose State-এ কম্বাইন ও ট্রান্সফর্ম করা যায়।
  • StateStore: একটি টাইপ-সেফ কন্টেনার যা Compose State হিসেবে শেয়ার করা অ্যাপ স্টেট স্টোর করে এবং দেখায়। একাধিক অ্যাপ্লিকেশন কম্পোনেন্ট জুড়ে স্টেট শেয়ার করার জন্য এটি সাধারণত ব্যবহার করা হয়।

UI কম্পোজেবলের বাইরে Compose State কীভাবে কাজ করে এবং আপনার আর্কিটেকচার জুড়ে mutableStateOf ও SavedStateHandle.saveable-এর মতো আগে থেকে থাকা Compose API-এর সাথে Transform ও StateStore কীভাবে ফিট করে তা জানতে, UI-এর বাইরে Compose State ব্যবহার করুন দেখুন।

আর্টিফ্যাক্ট

AppState ব্যবহার শুরু করতে, আপনার প্রোজেক্টের জন্য প্রয়োজনীয় আর্টিফ্যাক্ট এবং সহায়ক লাইব্রেরি যোগ করুন:

নাম এর কাজ কী আর্টিফ্যাক্ট
ট্রান্সফর্ম করুন UI-এর বাইরে Compose State তৈরি ও পর্যবেক্ষণ করে (transform এবং listener)। androidx.appstate.transform:transform
ট্রান্সফর্ম টেস্টিং Transform (transformTest এবং TransformTestScope)-এর জন্য ইউটিলিটি পরীক্ষা করা হচ্ছে। androidx.appstate.transform:transform-testing
StateStore কোর টাইপ-সেফ স্টেট কন্টেনার এবং StateStoreKey সংজ্ঞা। androidx.appstate.statestore:statestore
StateStore DataStore ইন্টিগ্রেশন Jetpack DataStore ব্যবহার করে ডিস্কে StateStore কী সেভ করে রাখে ও ফিরিয়ে আনে। androidx.appstate.statestore:statestore-datastore
Compose Compiler প্লাগ-ইন transform বা listener ব্যবহার করে এমন মডিউলে @Composable ফাংশন ও ব্লক কম্পাইল করে। org.jetbrains.kotlin.plugin.compose
KotlinX Serialization প্লাগ-ইন statestore-datastore ব্যবহার করার সময় @Serializable StateStoreKey এবং কাস্টম স্টেট টাইপের জন্য সিরিয়ালাইজার তৈরি করে। org.jetbrains.kotlin.plugin.serialization
KotlinX Serialization লাইব্রেরি statestore-datastore ব্যবহার করার সময় @Serializable StateStoreKey এবং কাস্টম স্টেট টাইপের জন্য রানটাইম সিরিয়ালাইজেশন লাইব্রেরি। org.jetbrains.kotlinx:kotlinx-serialization-core

প্রোজেক্ট সেট-আপ

আপনার প্রোজেক্টে AppState লাইব্রেরি যোগ করতে, আপনার libs.versions.toml ফাইলে ভার্সন, লাইব্রেরি ও Gradle প্লাগ-ইন ঘোষণা করুন:

[versions]
appstate = "1.0.0-alpha01"
kotlin = "2.4.10"
kotlinxSerializationCore = "1.11.0"

[libraries]
# Transform library for producing and observing Compose State
androidx-appstate-transform = { module = "androidx.appstate.transform:transform", version.ref = "appstate" }
# Testing utilities for Transform
androidx-appstate-transform-testing = { module = "androidx.appstate.transform:transform-testing", version.ref = "appstate" }
# Core StateStore library
androidx-appstate-statestore = { module = "androidx.appstate.statestore:statestore", version.ref = "appstate" }
# DataStore integration for StateStore (and required serialization runtime)
androidx-appstate-statestore-datastore = { module = "androidx.appstate.statestore:statestore-datastore", version.ref = "appstate" }
kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinxSerializationCore" }

[plugins]
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
# Required only when using statestore-datastore
jetbrains-kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }

এরপর, আপনার মডিউলের build.gradle.kts ফাইল কনফিগার করুন:

plugins {
    ...
    alias(libs.plugins.compose.compiler)
    // Required only when using statestore-datastore
    alias(libs.plugins.jetbrains.kotlin.serialization)
}

android {
    ...
    buildFeatures {
        compose = true
    }
}

dependencies {
    ...
    implementation(libs.androidx.appstate.transform)
    implementation(libs.androidx.appstate.statestore)

    // Optional: DataStore integration for StateStore
    implementation(libs.androidx.appstate.statestore.datastore)
    implementation(libs.kotlinx.serialization.core)

    ...
    testImplementation(libs.androidx.appstate.transform.testing)
}

কোডের নমুনা

AppState রেসিপি রিপোজিটরিতে সাধারণ Android আর্কিটেকচার প্যাটার্ন ও ফর্ম ফ্যাক্টর জুড়ে Transform ও StateStore কীভাবে ব্যবহার করতে হয় তা দেখানোর জন্য কার্যকরী উদাহরণ রয়েছে।

মতামত জানান

Transform ইস্যু ট্র্যাকার বা StateStore ইস্যু ট্র্যাকার ব্যবহার করে আপনার মতামত শেয়ার করুন, বাগ সম্পর্কে অভিযোগ জানান বা ফিচারের জন্য অনুরোধ করুন।