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 State değerine dönüştürmek için kullanıcı arayüzü olmadan bir @Composable bloğu çalıştıran, Compose çalışma zamanı üzerine inşa edilmiş bir kitaplıktır.
  • StateStore: Paylaşılan uygulama durumunu Compose State olarak 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.