AppState Parte do Android Jetpack.
O Jetpack AppState é um grupo de bibliotecas que ajuda a estender o State do Jetpack Compose
além da camada de interface para que você possa transformar e compartilhar
o estado reativo em qualquer camada do app. O AppState consiste em duas bibliotecas
principais:
- Transform: uma biblioteca criada no ambiente de execução do Compose
que executa um bloco
@Composablesem uma IU para combinar e transformar fontes de estado noStatedo Compose. - StateStore: um contêiner com segurança de tipos que armazena e
expõe o estado compartilhado do app como
Statedo Compose. Ele é mais usado com frequência para compartilhar o estado entre vários componentes de aplicativo.
Para saber como o Compose State funciona fora dos elementos combináveis da interface e como o Transform
e o StateStore se encaixam nas APIs do Compose, como mutableStateOf e
SavedStateHandle.saveable, em toda a arquitetura, consulte Usar o estado do Compose
fora da interface.
Artefatos
Para começar a usar o AppState, adicione os artefatos necessários ao seu projeto, além de todas as bibliotecas de suporte:
| Nome | Função | Artefato |
|---|---|---|
| Transformar | Produz e observa o State do Compose fora da interface (transform e listener). |
androidx.appstate.transform:transform |
| Teste de transformação | Utilitários de teste para Transform (transformTest e TransformTestScope). |
androidx.appstate.transform:transform-testing |
| StateStore | Contêiner de estado principal com segurança de tipos e definições de StateStoreKey. |
androidx.appstate.statestore:statestore |
| Integração do StateStore com o DataStore | Persiste e restaura chaves StateStore no disco usando o DataStore do Jetpack. |
androidx.appstate.statestore:statestore-datastore |
| Plug-in do Compose Compiler | Compila funções e blocos @Composable em módulos que usam transform ou listener. |
org.jetbrains.kotlin.plugin.compose |
| Plug-in KotlinX Serialization | Gera serializadores para @Serializable StateStoreKey e tipos de estado personalizados ao usar statestore-datastore. |
org.jetbrains.kotlin.plugin.serialization |
| Biblioteca KotlinX Serialization | Biblioteca de serialização de ambiente de execução para @Serializable StateStoreKey e tipos de estado personalizados ao usar statestore-datastore. |
org.jetbrains.kotlinx:kotlinx-serialization-core |
Configurar o projeto
Para adicionar as bibliotecas do AppState ao seu projeto, declare as versões, as bibliotecas
e os plug-ins do Gradle no arquivo 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" }
Em seguida, configure o arquivo build.gradle.kts do 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)
}
Amostras de código
O repositório de receitas do AppState contém exemplos funcionais que demonstram como usar o Transform e o StateStore em padrões de arquitetura e formatos comuns do Android.
Enviar feedback
Compartilhe seu feedback, informe bugs ou solicite recursos usando o Issue Tracker do Transform ou o Issue Tracker do StateStore.