AppState Android Jetpack का हिस्सा.
Jetpack AppState, लाइब्रेरी का एक ग्रुप है. इसकी मदद से, Jetpack Compose State को यूज़र इंटरफ़ेस (यूआई) लेयर से आगे बढ़ाया जा सकता है. इससे, अपने ऐप्लिकेशन की किसी भी लेयर में, रिएक्टिव स्टेट को बदला और शेयर किया जा सकता है. AppState में दो मुख्य लाइब्रेरी शामिल हैं:
- Transform: यह Compose रनटाइम पर बनी एक लाइब्रेरी है. यह यूज़र इंटरफ़ेस (यूआई) के बिना
@Composableब्लॉक को चलाती है, ताकि स्टेट सोर्स को ComposeStateमें जोड़ा और बदला जा सके. - 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 का इस्तेमाल करके, अपना सुझाव/राय दें या शिकायत करें, गड़बड़ियों की शिकायत करें या सुविधाओं का अनुरोध करें.