AppState   Bagian dari Android Jetpack.

Jetpack AppState adalah sekelompok library yang membantu Anda memperluas Jetpack Compose State di luar lapisan UI sehingga Anda dapat mengubah dan membagikan status reaktif di seluruh lapisan aplikasi. AppState terdiri dari dua library utama:

  • Transform: Library yang dibuat di runtime Compose yang menjalankan blok @Composable tanpa UI untuk menggabungkan dan mengubah sumber status menjadi State Compose.
  • StateStore: Penampung yang aman dari jenis yang menyimpan dan mengekspos status aplikasi bersama sebagai Compose State. Class ini paling sering digunakan untuk berbagi status di beberapa komponen aplikasi.

Untuk mempelajari cara kerja Compose State di luar composable UI dan cara Transform serta StateStore sesuai dengan Compose API yang ada seperti mutableStateOf dan SavedStateHandle.saveable di seluruh arsitektur Anda, lihat Menggunakan Status Compose di luar UI.

Artefak

Untuk mulai menggunakan AppState, tambahkan artefak yang diperlukan project Anda beserta library pendukungnya:

Nama Fungsi Artefak
Transformasi Membuat dan mengamati Compose State di luar UI (transform dan listener). androidx.appstate.transform:transform
Pengujian Transformasi Utilitas pengujian untuk Transform (transformTest dan TransformTestScope). androidx.appstate.transform:transform-testing
StateStore Penampung status type-safe inti dan definisi StateStoreKey. androidx.appstate.statestore:statestore
Integrasi StateStore DataStore Mempertahankan dan memulihkan kunci StateStore ke disk menggunakan DataStore Jetpack. androidx.appstate.statestore:statestore-datastore
Plugin Compose Compiler Mengompilasi fungsi dan blok @Composable dalam modul yang menggunakan transform atau listener. org.jetbrains.kotlin.plugin.compose
Plugin KotlinX Serialization Membuat penserialisasi untuk @Serializable StateStoreKey dan jenis status kustom saat menggunakan statestore-datastore. org.jetbrains.kotlin.plugin.serialization
Library KotlinX Serialization Library serialisasi runtime untuk @Serializable StateStoreKey dan jenis status kustom saat menggunakan statestore-datastore. org.jetbrains.kotlinx:kotlinx-serialization-core

Penyiapan project

Untuk menambahkan library AppState ke project Anda, deklarasikan versi, library, dan plugin Gradle dalam file libs.versions.toml:

[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" }

Selanjutnya, konfigurasikan file build.gradle.kts modul Anda:

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)
}

Contoh kode

Repositori resep AppState berisi contoh yang berfungsi dan menunjukkan cara menggunakan Transform dan StateStore di berbagai pola arsitektur dan faktor bentuk Android yang umum.

Berikan masukan

Sampaikan masukan, laporkan bug, atau minta fitur menggunakan issue tracker Transform atau issue tracker StateStore.