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 @Composable khô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ành State Compose.
  • 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 State củ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.