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 @Composable sin una IU para combinar y transformar fuentes de estado en State de Compose.
  • StateStore: Es un contenedor con seguridad de tipos que almacena y expone el estado compartido de la app como State de 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.