AppState Android Jetpack 的一部分。
Jetpack AppState 是一组库,可帮助您将 Jetpack Compose State 扩展到界面层之外,以便您在应用的任何层中转换和共享响应式状态。AppState 包含两个主要库:
- Transform:一个基于 Compose 运行时构建的库,可在没有界面的情况下运行
@Composable代码块,以将状态源组合并转换为 ComposeState。 - StateStore:一种类型安全的容器,用于存储共享应用状态并将其公开为 Compose
State。它最常用于在多个应用组件之间共享状态。
如需了解 Compose State 如何在界面可组合项之外运行,以及 Transform 和 StateStore 如何与现有 Compose API(例如 mutableStateOf 和 SavedStateHandle.saveable)在整个架构中协同工作,请参阅在界面之外使用 Compose 状态。
制品
如需开始使用 AppState,请添加项目所需的工件以及任何支持库:
| 名称 | 作用 | 制品 |
|---|---|---|
| 转换 | 在界面(transform 和 listener)之外生成和观察 Compose State。 |
androidx.appstate.transform:transform |
| 转换测试 | Transform(transformTest 和 TransformTestScope)的测试实用程序。 |
androidx.appstate.transform:transform-testing |
| StateStore | 核心类型安全状态容器和 StateStoreKey 定义。 |
androidx.appstate.statestore:statestore |
| StateStore DataStore 集成 | 使用 Jetpack DataStore 将 StateStore 密钥保留并恢复到磁盘。 |
androidx.appstate.statestore:statestore-datastore |
| Compose Compiler 插件 | 在使用了 transform 或 listener 的模块中编译 @Composable 函数和代码块。 |
org.jetbrains.kotlin.plugin.compose |
| KotlinX 序列化插件 | 使用 statestore-datastore 时,为 @Serializable StateStoreKey 和自定义状态类型生成序列化器。 |
org.jetbrains.kotlin.plugin.serialization |
| KotlinX 序列化库 | 使用 statestore-datastore 时,@Serializable StateStoreKey 和自定义状态类型的运行时序列化库。 |
org.jetbrains.kotlinx:kotlinx-serialization-core |
项目设置
如需将 AppState 库添加到项目中,请在 libs.versions.toml 文件中声明版本、库和 Gradle 插件:
[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" }
接下来,配置模块的 build.gradle.kts 文件:
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)
}
代码示例
AppState 方案代码库包含一些工作示例,演示了如何在常见的 Android 架构模式和设备规格中使用 Transform 和 StateStore。
提供反馈
您可以使用 Transform 问题跟踪器或 StateStore 问题跟踪器分享反馈、报告 bug 或请求功能。