AppState   بخشی از Android Jetpack.

Jetpack AppState گروهی از کتابخانه‌ها است که به شما کمک می‌کند Jetpack Compose را State فراتر از لایه میانای کاربر گسترش دهید تا بتوانید حالت واکنشی را در هر لایه‌ای از برنامه‌تان تبدیل و هم‌رسانی کنید. AppState از دو کتابخانه اصلی تشکیل شده است:

  • تبدیل: کتابخانه‌ای که بر روی زمان اجرای Compose ساخته شده است که یک بلوک @Composable را بدون رابط کاربری اجرا می‌کند تا منابع حالت را ترکیب و تبدیل کند به Compose State.
  • StateStore: محفظه‌ای با ایمنی تایپی که وضعیت برنامه هم‌رسانی‌شده را به‌عنوان Compose State ذخیره و نمایش می‌دهد. این الگو معمولاً برای هم‌رسانی وضعیت در چندین مؤلفه برنامه استفاده می‌شود.

برای آشنایی با نحوه عملکرد Compose State خارج از تابع‌های ترکیب‌پذیر میانای کاربر و نحوه قرارگیری Transform و StateStore در کنار میاناهای برنامه‌سازی کاربردی Compose موجود مانند mutableStateOf و SavedStateHandle.saveable در معماری شما، به استفاده از Compose State خارج از میانای کاربر مراجعه کنید.

آرتیفکت‌ها

برای شروع کار با AppState، مصنوعات موردنیاز پروژه‌تان را به‌همراه کتابخانه‌های پشتیبانی اضافه کنید:

نام کارکرد آرتیفکت
تغییر شکل State Compose را خارج از واسط کاربر (transform و listener) تولید و مشاهده می‌کند. androidx.appstate.transform:transform
آزمایش تبدیل کردن درحال آزمایش ابزارهای کمکی برای «تبدیل» (transformTest و TransformTestScope). androidx.appstate.transform:transform-testing
StateStore محفظه حالت ایمن از نوع هسته و تعاریف StateStoreKey. androidx.appstate.statestore:statestore
یکپارچه‌سازی StateStore DataStore کلیدهای StateStore را بااستفاده از DataStore Jetpack در دیسک حفظ و بازیابی می‌کند. androidx.appstate.statestore:statestore-datastore
افزایه Compose Compiler توابع و بلوک‌های @Composable را در واحدهایی که از transform یا listener استفاده می‌کنند کامپایل می‌کند. org.jetbrains.kotlin.plugin.compose
افزایه KotlinX Serialization هنگام استفاده از statestore-datastore، سریال‌سازهایی برای @Serializable StateStoreKey و انواع وضعیت سفارشی تولید می‌کند. org.jetbrains.kotlin.plugin.serialization
کتابخانه سریال‌سازی KotlinX کتابخانه سریال‌سازی زمان اجرا برای @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، بازخوردتان را هم‌رسانی کنید، اشکال‌ها را گزارش کنید، یا ویژگی درخواست کنید.