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 @Composable bez interfejsu, aby łączyć i przekształcać źródła stanu w State Compose.
  • StateStore: kontener z zabezpieczeniami wpisywania, który przechowuje i udostępnia stan aplikacji jako State w 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.