AppState Część Androida Jetpack.
Jetpack AppState to grupa bibliotek, które pomagają rozszerzyć Jetpack Compose State poza warstwę interfejsu, dzięki czemu możesz przekształcać i udostępniać stan reaktywny w dowolnej warstwie aplikacji. AppState składa się z 2 głównych bibliotek:
- Transform: biblioteka oparta na środowisku wykonawczym Compose, która uruchamia blok
@Composablebez interfejsu, aby łączyć i przekształcać źródła stanu wStateCompose. - StateStore: kontener z zabezpieczeniami wpisywania, który przechowuje i udostępnia stan aplikacji jako
Statew Compose. Najczęściej służy do udostępniania stanu między wieloma komponentami aplikacji.
Aby dowiedzieć się, jak Compose State działa poza elementami kompozycyjnymi interfejsu oraz jak Transform i StateStore współdziałają z istniejącymi interfejsami API Compose, takimi jak mutableStateOf i SavedStateHandle.saveable, w całej architekturze, przeczytaj artykuł Używanie stanu Compose poza interfejsem.
Artefakty
Aby zacząć korzystać z AppState, dodaj artefakty, których potrzebuje Twój projekt, oraz wszystkie biblioteki pomocnicze:
| Nazwa | Funkcje | Artefakt |
|---|---|---|
| Przekształcenie | Tworzy i obserwuje stan Compose State poza interfejsem (transform i listener). |
androidx.appstate.transform:transform |
| Testowanie przekształceń | Narzędzia testowe do przekształcania (transformTest i TransformTestScope). |
androidx.appstate.transform:transform-testing |
| StateStore | Podstawowy kontener stanu z zabezpieczeniami wpisywania i definicje StateStoreKey. |
androidx.appstate.statestore:statestore |
| Integracja magazynu danych StateStore | Zapisuje i przywraca klucze StateStore na dysku za pomocą Jetpack DataStore. |
androidx.appstate.statestore:statestore-datastore |
| Wtyczka kompilatora Compose | Kompiluje funkcje i bloki @Composable w modułach, które używają transform lub listener. |
org.jetbrains.kotlin.plugin.compose |
| Wtyczka KotlinX Serialization | Generuje serializatory dla @Serializable StateStoreKey i niestandardowych typów stanów, gdy używasz statestore-datastore. |
org.jetbrains.kotlin.plugin.serialization |
| Biblioteka KotlinX Serialization | Biblioteka serializacji środowiska wykonawczego dla @Serializable StateStoreKey i niestandardowych typów stanów podczas korzystania z statestore-datastore. |
org.jetbrains.kotlinx:kotlinx-serialization-core |
Konfigurowanie projektu
Aby dodać biblioteki AppState do projektu, zadeklaruj wersje, biblioteki i wtyczki Gradle w pliku 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" }
Następnie skonfiguruj plik build.gradle.kts modułu:
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)
}
Przykładowe fragmenty kodu
Repozytorium przepisów AppState zawiera działające przykłady pokazujące, jak używać Transform i StateStore w typowych wzorcach architektury Androida i formatach.
Prześlij opinię
Prześlij opinię, zgłoś błędy lub poproś o dodanie funkcji za pomocą narzędzia Issue Tracker dla Transform lub narzędzia Issue Tracker dla StateStore.