AppState Inclus dans Android Jetpack.
Jetpack AppState est un groupe de bibliothèques qui vous aide à étendre State de Jetpack Compose au-delà de la couche d'interface utilisateur afin de pouvoir transformer et partager l'état réactif sur n'importe quelle couche de votre application. AppState se compose de deux bibliothèques principales :
- Transform : bibliothèque basée sur l'environnement d'exécution Compose qui exécute un bloc
@Composablesans UI pour combiner et transformer des sources d'état enStateCompose. - StateStore : conteneur de sûreté du typage qui stocke et expose l'état de l'application partagée en tant que
StateCompose. Il est le plus souvent utilisé pour partager l'état entre plusieurs composants d'application.
Pour découvrir comment Compose State fonctionne en dehors des composables d'UI et comment Transform et StateStore s'intègrent aux API Compose existantes telles que mutableStateOf et SavedStateHandle.saveable dans votre architecture, consultez Utiliser l'état Compose en dehors de l'UI.
Artefacts
Pour commencer à utiliser AppState, ajoutez les artefacts dont votre projet a besoin, ainsi que les bibliothèques compatibles :
| Nom | Description | Artefact |
|---|---|---|
| Transformer | Produit et observe l'élément State Compose en dehors de l'UI (transform et listener). |
androidx.appstate.transform:transform |
| Tester les transformations | Utilitaires de test pour Transform (transformTest et TransformTestScope). |
androidx.appstate.transform:transform-testing |
| StateStore | Conteneur d'état principal avec sûreté du typage et définitions StateStoreKey. |
androidx.appstate.statestore:statestore |
| Intégration de StateStore et DataStore | Conserve et restaure les clés StateStore sur le disque à l'aide de Jetpack DataStore. |
androidx.appstate.statestore:statestore-datastore |
| Plug-in du compilateur Compose | Compile les fonctions et les blocs @Composable dans les modules qui utilisent transform ou listener. |
org.jetbrains.kotlin.plugin.compose |
| Plug-in KotlinX Serialization | Génère des sérialiseurs pour @Serializable StateStoreKey et les types d'état personnalisés lors de l'utilisation de statestore-datastore. |
org.jetbrains.kotlin.plugin.serialization |
| Bibliothèque KotlinX Serialization | Bibliothèque de sérialisation d'exécution pour @Serializable StateStoreKey et les types d'état personnalisés lors de l'utilisation de statestore-datastore. |
org.jetbrains.kotlinx:kotlinx-serialization-core |
Configuration du projet
Pour ajouter les bibliothèques AppState à votre projet, déclarez les versions, les bibliothèques et les plug-ins Gradle dans votre fichier 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" }
Ensuite, configurez le fichier build.gradle.kts de votre module :
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)
}
Exemples de code
Le dépôt de recettes AppState contient des exemples fonctionnels montrant comment utiliser Transform et StateStore dans des modèles d'architecture et des facteurs de forme Android courants.
Envoyer des commentaires
Partagez vos commentaires, signalez des bugs ou demandez des fonctionnalités à l'aide de l'Issue Tracker Transform ou de l'Issue Tracker StateStore.