AppState Một phần của Android Jetpack.
Jetpack AppState là một nhóm thư viện giúp bạn mở rộng Jetpack Compose
State ra ngoài lớp giao diện người dùng để có thể chuyển đổi và chia sẻ
trạng thái phản ứng trên mọi lớp của ứng dụng. AppState bao gồm hai
thư viện chính:
- Transform: Thư viện được xây dựng trên thời gian chạy Compose, chạy một khối
@Composablekhông có giao diện người dùng để kết hợp và chuyển đổi các nguồn trạng thái thànhStateCompose. - StateStore: Một vùng chứa an toàn về kiểu, lưu trữ và hiển thị trạng thái ứng dụng dùng chung dưới dạng
Statecủa Compose. Lớp này thường được dùng nhất để chia sẻ trạng thái giữa nhiều thành phần của ứng dụng.
Để tìm hiểu cách Compose State hoạt động bên ngoài các thành phần kết hợp giao diện người dùng và cách Transform cũng như StateStore phù hợp với các API Compose hiện có như mutableStateOf và SavedStateHandle.saveable trong cấu trúc của bạn, hãy xem bài viết Sử dụng trạng thái Compose bên ngoài giao diện người dùng.
Nội dung đã tạo
Để bắt đầu sử dụng AppState, hãy thêm các cấu phần phần mềm mà dự án của bạn cần cùng với mọi thư viện hỗ trợ:
| Tên | Ý nghĩa | Cấu phần phần mềm |
|---|---|---|
| Transform | Tạo và quan sát State của Compose bên ngoài giao diện người dùng (transform và listener). |
androidx.appstate.transform:transform |
| Kiểm thử phép biến đổi | Kiểm thử các tiện ích cho Transform (transformTest và TransformTestScope). |
androidx.appstate.transform:transform-testing |
| StateStore | Vùng chứa trạng thái an toàn về kiểu cốt lõi và các định nghĩa StateStoreKey. |
androidx.appstate.statestore:statestore |
| Tích hợp StateStore DataStore | Lưu trữ và khôi phục các khoá StateStore vào ổ đĩa bằng DataStore của Jetpack. |
androidx.appstate.statestore:statestore-datastore |
| Trình bổ trợ Trình biên dịch Compose | Biên dịch các hàm và khối @Composable trong các mô-đun sử dụng transform hoặc listener. |
org.jetbrains.kotlin.plugin.compose |
| Trình bổ trợ KotlinX Serialization | Tạo trình chuyển đổi tuần tự cho @Serializable StateStoreKey và các loại trạng thái tuỳ chỉnh khi sử dụng statestore-datastore. |
org.jetbrains.kotlin.plugin.serialization |
| Thư viện KotlinX Serialization | Thư viện chuyển đổi tuần tự trong thời gian chạy cho @Serializable StateStoreKey và các loại trạng thái tuỳ chỉnh khi sử dụng statestore-datastore. |
org.jetbrains.kotlinx:kotlinx-serialization-core |
Thiết lập dự án
Để thêm thư viện AppState vào dự án, hãy khai báo các phiên bản, thư viện và trình bổ trợ Gradle trong tệp 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" }
Tiếp theo, hãy định cấu hình tệp build.gradle.kts của mô-đun:
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)
}
Mã mẫu
Kho lưu trữ công thức AppState chứa các ví dụ minh hoạ cách sử dụng Transform và StateStore trên các mẫu kiến trúc và hệ số hình dạng phổ biến của Android.
Gửi ý kiến phản hồi
Chia sẻ ý kiến phản hồi, báo cáo lỗi hoặc yêu cầu tính năng bằng cách sử dụng Trình theo dõi sự cố về Transform hoặc Trình theo dõi sự cố về StateStore.