AppState Часть Android Jetpack.
Jetpack AppState – это группа библиотек, которые помогают расширить возможности Jetpack Compose State за пределы уровня пользовательского интерфейса, чтобы вы могли преобразовывать и передавать реактивное состояние на любом уровне приложения. AppState состоит из двух основных библиотек:
- Transform. Библиотека, созданная на основе среды выполнения Compose, которая запускает блок
@Composableбез пользовательского интерфейса, чтобы объединять и преобразовывать источники состояния вStateCompose. - StateStore – типобезопасный контейнер, который хранит и предоставляет общее состояние приложения в виде
StateCompose. Чаще всего он используется для обмена данными между несколькими компонентами приложения.
Чтобы узнать, как Compose State работает за пределами composable-функций интерфейса и как Transform и StateStore сочетаются с существующими API Compose, такими как mutableStateOf и SavedStateHandle.saveable, в вашей архитектуре, прочитайте статью Использование состояния Compose за пределами интерфейса.
Объекты
Чтобы начать работу с AppState, добавьте в проект необходимые артефакты и вспомогательные библиотеки.
| Название | Описание | Объект |
|---|---|---|
| Преобразовать | Создает и отслеживает Compose State за пределами пользовательского интерфейса (transform и listener). |
androidx.appstate.transform:transform |
| Тестирование преобразования | Утилиты для тестирования преобразования (transformTest и TransformTestScope). |
androidx.appstate.transform:transform-testing |
| StateStore | Основной типобезопасный контейнер состояний и определения StateStoreKey. |
androidx.appstate.statestore:statestore |
| Интеграция StateStore DataStore | Сохраняет и восстанавливает ключи StateStore на диске с помощью Jetpack DataStore. |
androidx.appstate.statestore:statestore-datastore |
| Плагин Compose Compiler | Компилирует функции и блоки @Composable в модулях, использующих transform или listener. |
org.jetbrains.kotlin.plugin.compose |
| Плагин KotlinX Serialization | Генерирует сериализаторы для @Serializable StateStoreKey и пользовательских типов состояний при использовании statestore-datastore. |
org.jetbrains.kotlin.plugin.serialization |
| Библиотека KotlinX Serialization | Библиотека сериализации среды выполнения для @Serializable StateStoreKey и пользовательских типов состояний при использовании statestore-datastore. |
org.jetbrains.kotlinx:kotlinx-serialization-core |
Настройка проекта
Чтобы добавить библиотеки AppState в проект, объявите версии, библиотеки и плагины Gradle в файле 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" }
Затем настройте файл 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 есть рабочие примеры, демонстрирующие, как использовать Transform и StateStore в распространенных шаблонах архитектуры Android и форм-факторах.
Отправить отзыв
Поделитесь своим мнением, сообщите об ошибках или запросите новые функции, используя систему отслеживания ошибок Transform или систему отслеживания ошибок StateStore.