AppState   Android Jetpack का हिस्सा.

Jetpack AppState, लाइब्रेरी का एक ग्रुप है. इसकी मदद से, Jetpack Compose State को यूज़र इंटरफ़ेस (यूआई) लेयर से आगे बढ़ाया जा सकता है. इससे, अपने ऐप्लिकेशन की किसी भी लेयर में, रिएक्टिव स्टेट को बदला और शेयर किया जा सकता है. AppState में दो मुख्य लाइब्रेरी शामिल हैं:

  • Transform: यह Compose रनटाइम पर बनी एक लाइब्रेरी है. यह यूज़र इंटरफ़ेस (यूआई) के बिना @Composable ब्लॉक को चलाती है, ताकि स्टेट सोर्स को Compose State में जोड़ा और बदला जा सके.
  • StateStore: यह एक टाइप-सेफ़ कंटेनर है, जो शेयर किए गए ऐप्लिकेशन की स्थिति को Compose State के तौर पर सेव और एक्सपोज़ करता है. इसका इस्तेमाल आम तौर पर, ऐप्लिकेशन के कई कॉम्पोनेंट के बीच स्टेट शेयर करने के लिए किया जाता है.

यूज़र इंटरफ़ेस (यूआई) कंपोज़ेबल के बाहर Compose State के काम करने का तरीका जानने के लिए, यूज़र इंटरफ़ेस (यूआई) के बाहर Compose स्टेट का इस्तेमाल करना लेख पढ़ें. इसमें यह भी बताया गया है कि Transform और StateStore, आपके आर्किटेक्चर में mutableStateOf और SavedStateHandle.saveable जैसे मौजूदा Compose एपीआई के साथ कैसे काम करते हैं.

आर्टफ़ैक्ट

AppState का इस्तेमाल शुरू करने के लिए, अपने प्रोजेक्ट में ज़रूरी आर्टफ़ैक्ट और अन्य लाइब्रेरी जोड़ें:

नाम यह क्या करता है सह-प्रॉडक्ट
बदलाव करें यूज़र इंटरफ़ेस (transform और listener) के बाहर, Compose State को जनरेट और मॉनिटर करता है. androidx.appstate.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 कंपाइलर प्लग इन transform या listener का इस्तेमाल करने वाले मॉड्यूल में, @Composable फ़ंक्शन और ब्लॉक को कंपाइल करता है. org.jetbrains.kotlin.plugin.compose
KotlinX Serialization प्लगिन statestore-datastore का इस्तेमाल करने पर, @Serializable StateStoreKey और कस्टम स्टेट टाइप के लिए सीरियलाइज़र जनरेट करता है. org.jetbrains.kotlin.plugin.serialization
KotlinX सीरियलाइज़ेशन लाइब्रेरी 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 recipes repository में, काम करने वाले उदाहरण शामिल हैं. इनसे पता चलता है कि Android के सामान्य आर्किटेक्चर पैटर्न और डिवाइस के नाप या आकार के हिसाब से, Transform और StateStore का इस्तेमाल कैसे किया जाता है.

सुझाव/राय दें या शिकायत करें

Transform issue tracker या StateStore issue tracker का इस्तेमाल करके, अपना सुझाव/राय दें या शिकायत करें, गड़बड़ियों की शिकायत करें या सुविधाओं का अनुरोध करें.