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 @Composable senza UI per combinare e trasformare le origini di stato in State di Compose.
  • StateStore: un container con sicurezza dei tipi che archivia ed espone lo stato dell'app condiviso come State di 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.