AppState بخشی از Android Jetpack.
Jetpack AppState گروهی از کتابخانهها است که به شما کمک میکند Jetpack Compose را
State فراتر از لایه میانای کاربر گسترش دهید تا بتوانید حالت واکنشی را در هر لایهای از برنامهتان تبدیل و همرسانی کنید. AppState از دو کتابخانه اصلی تشکیل شده است:
- تبدیل: کتابخانهای که بر روی زمان اجرای Compose ساخته شده است
که یک بلوک
@Composableرا بدون رابط کاربری اجرا میکند تا منابع حالت را ترکیب و تبدیل کند به ComposeState. - 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، بازخوردتان را همرسانی کنید، اشکالها را گزارش کنید، یا ویژگی درخواست کنید.