AppState Teil von Android Jetpack.
Jetpack AppState ist eine Gruppe von Bibliotheken, mit denen Sie Jetpack Compose State über die UI-Ebene hinaus erweitern können, um reaktiven Status auf allen Ebenen Ihrer App zu transformieren und zu teilen. AppState besteht aus zwei Hauptbibliotheken:
- Transform: Eine Bibliothek, die auf der Compose-Laufzeit basiert und einen
@Composable-Block ohne UI ausführt, um Statusquellen zu kombinieren und in Compose-Statezu transformieren. - StateStore: Ein typsicherer Container, der den freigegebenen App-Status als Compose-
Statespeichert und verfügbar macht. Sie wird am häufigsten verwendet, um den Status über mehrere Anwendungskomponenten hinweg freizugeben.
Informationen dazu, wie Compose State außerhalb von UI-Kompositfunktionen funktioniert und wie Transform und StateStore neben vorhandenen Compose APIs wie mutableStateOf und SavedStateHandle.saveable in Ihre Architektur passen, finden Sie unter Compose-Status außerhalb der UI verwenden.
Artefakte
Füge die für dein Projekt erforderlichen Artefakte und alle unterstützenden Bibliotheken hinzu, um mit AppState zu beginnen:
| Name | Funktion | Artefakt |
|---|---|---|
| Transformieren | Erzeugt und beobachtet Compose-State außerhalb der UI (transform und listener). |
androidx.appstate.transform:transform |
| Transformationstests | Testdienstprogramme für Transform (transformTest und TransformTestScope). |
androidx.appstate.transform:transform-testing |
| StateStore | Typsicherer Kernstatuscontainer und StateStoreKey-Definitionen. |
androidx.appstate.statestore:statestore |
| StateStore-DataStore-Integration | Speichert StateStore-Schlüssel mit Jetpack DataStore auf dem Laufwerk und stellt sie wieder her. |
androidx.appstate.statestore:statestore-datastore |
| Compose Compiler-Plug-in | Kompiliert @Composable-Funktionen und -Blöcke in Modulen, die transform oder listener verwenden. |
org.jetbrains.kotlin.plugin.compose |
| KotlinX Serialization-Plug-in | Generiert Serializer für @Serializable-StateStoreKey und benutzerdefinierte Zustandstypen, wenn statestore-datastore verwendet wird. |
org.jetbrains.kotlin.plugin.serialization |
| KotlinX-Serialisierungsbibliothek | Laufzeit-Serialisierungsbibliothek für @Serializable-StateStoreKey und benutzerdefinierte Statustypen bei Verwendung von statestore-datastore. |
org.jetbrains.kotlinx:kotlinx-serialization-core |
Projekt einrichten
Wenn Sie die AppState-Bibliotheken zu Ihrem Projekt hinzufügen möchten, deklarieren Sie die Versionen, Bibliotheken und Gradle-Plug-ins in Ihrer libs.versions.toml-Datei:
[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" }
Konfigurieren Sie als Nächstes die build.gradle.kts-Datei Ihres Moduls:
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)
}
Codebeispiele
Das Repository mit AppState-Rezepten enthält funktionierende Beispiele, die zeigen, wie Transform und StateStore in gängigen Android-Architekturmustern und Formfaktoren verwendet werden.
Feedback geben
Über den Issue Tracker für Transform oder den Issue Tracker für StateStore können Sie Feedback geben, Fehler melden oder Funktionen anfragen.