AppState Android Jetpack'in bir parçası.
Jetpack AppState, Jetpack Compose'u State kullanıcı arayüzü katmanının ötesine genişletmenize yardımcı olan bir kitaplık grubudur. Böylece, uygulamanızın herhangi bir katmanında reaktif durumu dönüştürebilir ve paylaşabilirsiniz. AppState iki ana kitaplıktan oluşur:
- Transform: Durum kaynaklarını birleştirip Compose
Statedeğerine dönüştürmek için kullanıcı arayüzü olmadan bir@Composablebloğu çalıştıran, Compose çalışma zamanı üzerine inşa edilmiş bir kitaplıktır. - StateStore: Paylaşılan uygulama durumunu Compose
Stateolarak depolayan ve gösteren, tür açısından güvenli bir kapsayıcıdır. En çok tercih edilen kullanım amacı, durumu birden fazla uygulama bileşeni arasında paylaşmaktır.
Compose State'un kullanıcı arayüzü composable'ları dışında nasıl çalıştığını ve Transform ile StateStore'un mimarinizdeki mutableStateOf ve SavedStateHandle.saveable gibi mevcut Compose API'leriyle nasıl uyumlu olduğunu öğrenmek için Kullanıcı arayüzü dışında Compose State'i kullanma başlıklı makaleyi inceleyin.
Yapılar
AppState'i kullanmaya başlamak için projenizin ihtiyaç duyduğu yapıları ve destekleyici kitaplıkları ekleyin:
| Ad | Ne işe yarar? | Yapı |
|---|---|---|
| Dönüştür | Kullanıcı arayüzü dışında (transform ve listener) Compose State üretir ve gözlemler. |
androidx.appstate.transform:transform |
| Testleri dönüştürme | Dönüşüm için test yardımcı programları (transformTest ve TransformTestScope). |
androidx.appstate.transform:transform-testing |
| StateStore | Temel tip güvenli durum kapsayıcısı ve StateStoreKey tanımları. |
androidx.appstate.statestore:statestore |
| StateStore DataStore entegrasyonu | Jetpack DataStore'u kullanarak StateStore anahtarı diske kaydeder ve geri yükler. |
androidx.appstate.statestore:statestore-datastore |
| Compose Compiler eklentisi | transform veya listener kullanan modüllerdeki @Composable işlevlerini ve bloklarını derler. |
org.jetbrains.kotlin.plugin.compose |
| KotlinX Serialization eklentisi | statestore-datastore kullanılırken @Serializable StateStoreKey ve özel durum türleri için serileştiriciler oluşturur. |
org.jetbrains.kotlin.plugin.serialization |
| KotlinX Serialization kitaplığı | statestore-datastore kullanılırken @Serializable StateStoreKey ve özel durum türleri için çalışma zamanı serileştirme kitaplığı. |
org.jetbrains.kotlinx:kotlinx-serialization-core |
Proje ayarlama
AppState kitaplıklarını projenize eklemek için libs.versions.toml dosyanızda sürümleri, kitaplıkları ve Gradle eklentilerini tanımlayın:
[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" }
Ardından, modülünüzün build.gradle.kts dosyasını yapılandırın:
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)
}
Kod örnekleri
AppState tarifleri deposu, yaygın Android mimari kalıpları ve form faktörlerinde Transform ve StateStore'un nasıl kullanılacağını gösteren çalışan örnekler içerir.
Geri bildirim gönderme
Transform Issue Tracker veya StateStore Issue Tracker'ı kullanarak geri bildirimlerinizi paylaşabilir, hataları bildirebilir ya da özellik isteğinde bulunabilirsiniz.