‫AppState   בארגז הכלים Android Jetpack.

‫Jetpack AppState היא קבוצה של ספריות שעוזרות להרחיב את Jetpack Compose State מעבר לשכבת ממשק המשתמש, כדי שתוכלו לשנות ולשתף מצב תגובתי בכל שכבה באפליקציה. AppState מורכבת משתי ספריות עיקריות:

  • ‫Transform: ספרייה שמבוססת על סביבת זמן הריצה של Compose, שמריצה בלוק @Composable בלי ממשק משתמש כדי לשלב מקורות של מצבים ולהמיר אותם ל-State של Compose.
  • ‫StateStore: קונטיינר למניעת שגיאות הקלדה שמאחסן וחושף את מצב האפליקציה המשותף בתור State של Compose. בדרך כלל משתמשים בו כדי לשתף מצב בין כמה רכיבים באפליקציה.

כדי ללמוד איך Compose State פועל מחוץ לרכיבים קומפוזביליים של ממשק המשתמש, ואיך Transform ו-StateStore משתלבים לצד ממשקי API קיימים של Compose כמו mutableStateOf ו-SavedStateHandle.saveable בארכיטקטורה, קראו את המאמר שימוש ב-Compose State מחוץ לממשק המשתמש.

פריטי מידע

כדי להתחיל להשתמש ב-AppState, מוסיפים את פריטי המידע שדרושים לפרויקט, יחד עם ספריות תומכות:

שם תיאור פריט מידע שנוצר בתהליך פיתוח (Artifact)
שדרוג הטקסט והסגנון יוצר וצופה ב-State של Compose מחוץ לממשק המשתמש (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 ובגורמי צורה נפוצים.

שליחת משוב

אתם יכולים לשלוח משוב, לדווח על באגים או לבקש תכונות באמצעות Issue Tracker של Transform או Issue Tracker של StateStore.