AppState Parte de Android Jetpack.
Jetpack AppState es un grupo de bibliotecas que te ayuda a extender Jetpack Compose
State más allá de la capa de la IU para que puedas transformar y compartir
el estado reactivo en cualquier capa de tu app. AppState consta de dos bibliotecas
principales:
- Transform: Es una biblioteca compilada en el entorno de ejecución de Compose que ejecuta un bloque
@Composablesin una IU para combinar y transformar fuentes de estado enStatede Compose. - StateStore: Es un contenedor con seguridad de tipos que almacena y expone el estado compartido de la app como
Statede Compose. Se usa de uso frecuente para compartir el estado entre varios componentes de la aplicación.
Para aprender cómo funciona Compose State fuera de los elementos componibles de la IU y cómo Transform y StateStore se ajustan a las APIs de Compose existentes, como mutableStateOf y SavedStateHandle.saveable, en toda tu arquitectura, consulta Cómo usar el estado de Compose fuera de la IU.
Artefactos
Para comenzar a usar AppState, agrega los artefactos que necesita tu proyecto junto con las bibliotecas de compatibilidad:
| Nombre | Qué hace | Artefacto |
|---|---|---|
| Transformación | Produce y observa el State de Compose fuera de la IU (transform y listener). |
androidx.appstate.transform:transform |
| Pruebas de transformación | Utilidades de prueba para Transform (transformTest y TransformTestScope). |
androidx.appstate.transform:transform-testing |
| StateStore | Contenedor de estado principal con seguridad de tipos y definiciones de StateStoreKey. |
androidx.appstate.statestore:statestore |
| Integración de StateStore con DataStore | Conserva y restablece las claves de StateStore en el disco con DataStore de Jetpack. |
androidx.appstate.statestore:statestore-datastore |
| Complemento del compilador de Compose | Compila funciones y bloques @Composable en módulos que usan transform o listener. |
org.jetbrains.kotlin.plugin.compose |
| Complemento de KotlinX Serialization | Genera serializadores para @Serializable StateStoreKey y tipos de estado personalizados cuando se usa statestore-datastore. |
org.jetbrains.kotlin.plugin.serialization |
| Biblioteca de KotlinX Serialization | Biblioteca de serialización del entorno de ejecución para @Serializable StateStoreKey y tipos de estado personalizados cuando se usa statestore-datastore. |
org.jetbrains.kotlinx:kotlinx-serialization-core |
Configura el proyecto
Para agregar las bibliotecas de AppState a tu proyecto, declara las versiones, las bibliotecas
y los complementos de Gradle en tu archivo 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" }
A continuación, configura el archivo build.gradle.kts de tu módulo:
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)
}
Muestras de código
El repositorio de recetas de AppState contiene ejemplos prácticos que demuestran cómo usar Transform y StateStore en patrones de arquitectura y factores de forma comunes de Android.
Enviar comentarios
Comparte tus comentarios, informa errores o solicita funciones con la Herramienta de seguimiento de errores de Transform o la Herramienta de seguimiento de errores de StateStore.