AppState Parte di Android Jetpack.
Jetpack AppState è un gruppo di librerie che ti aiuta a estendere Jetpack Compose
State oltre il livello UI, in modo da poter trasformare e condividere
lo stato reattivo in qualsiasi livello della tua app. AppState è composto da due librerie
principali:
- Transform: una libreria basata sul runtime di Compose che esegue un blocco
@Composablesenza UI per combinare e trasformare le origini di stato inStatedi Compose. - StateStore: un container con sicurezza dei tipi che archivia ed espone lo stato dell'app condiviso come
Statedi Compose. Viene utilizzato più comunemente per condividere lo stato tra più componenti dell'applicazione.
Per scoprire come funziona Compose State al di fuori dei composabili dell'interfaccia utente e come Transform e StateStore si integrano con le API Compose esistenti, come mutableStateOf e SavedStateHandle.saveable, nella tua architettura, consulta Utilizza lo stato di Compose al di fuori dell'interfaccia utente.
Artefatti
Per iniziare a utilizzare AppState, aggiungi gli artefatti necessari al tuo progetto insieme alle eventuali librerie di supporto:
| Nome | Descrizione | Artefatto |
|---|---|---|
| Trasformazione | Produce e osserva Compose State al di fuori della UI (transform e listener). |
androidx.appstate.transform:transform |
| Test della trasformazione | Utilità di test per Transform (transformTest e TransformTestScope). |
androidx.appstate.transform:transform-testing |
| StateStore | Container di stato di base con sicurezza dei tipi e definizioni di StateStoreKey. |
androidx.appstate.statestore:statestore |
| Integrazione di StateStore con DataStore | Conserva e ripristina le chiavi StateStore sul disco utilizzando Jetpack DataStore. |
androidx.appstate.statestore:statestore-datastore |
| Plug-in Compose Compiler | Compila le funzioni e i blocchi @Composable nei moduli che utilizzano transform o listener. |
org.jetbrains.kotlin.plugin.compose |
| Plug-in KotlinX Serialization | Genera serializzatori per @Serializable StateStoreKey e tipi di stato personalizzati quando utilizzi statestore-datastore. |
org.jetbrains.kotlin.plugin.serialization |
| Libreria di serializzazione KotlinX | Libreria di serializzazione di runtime per i tipi di stato @Serializable StateStoreKey e personalizzati quando utilizzi statestore-datastore. |
org.jetbrains.kotlinx:kotlinx-serialization-core |
Configurazione del progetto
Per aggiungere le librerie AppState al tuo progetto, dichiara le versioni, le librerie e i plug-in Gradle nel 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" }
Successivamente, configura il file build.gradle.kts del modulo:
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)
}
Esempi di codice
Il repository di ricette AppState contiene esempi funzionanti che mostrano come utilizzare Transform e StateStore in pattern di architettura e fattori di forma Android comuni.
Invia il tuo feedback
Condividi il tuo feedback, segnala bug o richiedi funzionalità utilizzando l'Issue Tracker di Transform o l'Issue Tracker di StateStore.