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
@Composabletanpa UI untuk menggabungkan dan mengubah sumber status menjadiStateCompose. - 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.