Chuyển đến nội dung chính

State Management in Jetpack Compose

 


Làm việc với Jetpack Compose trong Android và muốn cập nhật giao diện người dùng trong thời gian chạy có thể được xử lý bằng cách quản lý trạng thái trong Jetpack Compose. Trong bài viết này, chúng ta sẽ tìm hiểu:


  • Làm thế nào để quản lý trạng thái trong Jetpack Compose?

  • Quản lý các cách Trạng thái trong Compose


  1. Làm thế nào để quản lý trạng thái trong Jetpack Compose?

Trước hết, Trạng thái là gì? Chúng ta hãy nhìn vào nó. Trạng thái nói chung là một đối tượng có chứa dữ liệu nhất định được ánh xạ tới một hoặc nhiều widget. Giá trị của trạng thái có thể thay đổi trong thời gian chạy, điều này sẽ giúp chúng tôi cập nhật tiện ích con với dữ liệu được cập nhật.

Trong Compose, bản cập nhật có thể tổng hợp được dựa trên giá trị của trạng thái. Khi giá trị được cập nhật, hàm có thể tổng hợp chỉ tái tạo lại giá trị có thể kết hợp có dữ liệu được cập nhật.


  1. Quản lý các cách Trạng thái trong Compose


Trong Compose, chúng ta có thể quản lý trạng thái bằng MutableState

Bây giờ, chúng ta hãy hiểu làm thế nào chúng ta có thể sử dụng nó?

Trước tiên, hãy tạo một ứng dụng và thiết lập cơ bản. MainActivity của chúng tôi trông giống như:

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MainScreen()
}
}
}

@Composable
fun MainScreen() {
}


Trong ứng dụng này, chúng tôi muốn thiết kế một textField.Thông thường chúng tôi biết nó là editText.Khi chúng ta nhấp vào textField và viết một cái gì đó bên trong, hiển thị những gì được viết trên màn hình.


Vì vậy, bây giờ chúng ta hãy bắt đầu triển khai.


Sử dụng MutableState trong Compose


Đầu tiên, chúng tôi sẽ tạo một hàm có thể kết hợp được gọi là:


class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MainScreen()
}
}
}

@Composable
fun MainScreen() {
}

@Composable
fun SpecialTextField(string: String, function: (String) -> Unit){
TextField(value = string ,onValueChange = function,modifier = Modifier.padding(5.dp))
}

Ở đây, chúng tôi đã thêm cấu trúc cơ bản của một TextField. Trong TextField, tôi đã thêm, onValueChange nơi sẽ cập nhật giá trị và trong TextField, chúng tôi sẽ cập nhật giá trị.

Bây giờ, chúng ta sẽ tạo một biến kiểu MutableState sẽ giữ giá trị ban đầu là “”. Khi chúng ta viết bên trong trạng thái Textfield sẽ biên soạn lại thành UI.

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MainScreen()
}
}
}

@Composable
fun MainScreen() {
var myString = remember { mutableStateOf("")}
SpecialTextField(myString.value){ myString.value = it }
}

@Composable
fun SpecialTextField(string: String, function: (String) -> Unit){
TextField(value = string ,onValueChange = function,modifier = Modifier.padding(5.dp))
}

MutableState cung cấp cho chúng ta thuộc tính giá trị khi thực thi. Hàm Composable đăng ký với MutableState và khi giá trị thay đổi, thành phần lại của có thể soạn lại xảy ra và do đó giá trị được cập nhật.


Ở đây, trong ví dụ của chúng tôi, chúng tôi đang sử dụng ghi nhớ với MutableState. Các hàm tổng hợp có thể lưu trữ một đối tượng duy nhất trong bộ nhớ bằng cách sử dụng hàm tổng hợp có thể nhớ. Một giá trị được tính toán bởi nhớ được lưu trữ trong Thành phần trong quá trình tạo ban đầu và giá trị được lưu trữ được trả về trong quá trình bố cục lại. Hãy nhớ rằng có thể được sử dụng để lưu trữ cả các đối tượng có thể thay đổi và bất biến.


Bằng cách này, chúng tôi đảm bảo rằng đầu vào được in trên màn hình mỗi lần ghi nhớ.


Chúc bạn học tốt.





Nhận xét

Bài đăng phổ biến từ blog này

Thiết kế giao diện với DotNetBar (Phần 1)

Đây là phiên bản DotNetBar hỗ trợ C# và Visual Basic https://www.dropbox.com/s/wx80jpvgnlrmtux/DotNetBar.rar  , phiên bản này hỗ trợ giao diện Metro cực kỳ “dễ thương” Các bạn load về và cài đặt, khi cài đặt xong sẽ có source code mẫu của tất cả các control. Để sử dụng được các control của DotNetBar các bạn nhớ add item vào controls box. Thiết kế giao diện với DotNetBar, giao diện sẽ rất đẹp. Link các video hướng dẫn chi tiết cách sử dụng và coding: http://www.devcomponents.com/dotnetbar/movies.aspx Hiện tại DotNetBar có rất nhiều công cụ cực mạnh, trong đó có 3 công cụ dưới đây: DotNetBar for Windows Forms Requires with Visual Studio 2003, 2005, 2008, 2010 or 2012.   DotNetBar for WPF Requires with Visual Studio 2010 or 2012 and Windows Presentation Foundation.   DotNetBar for Silverlight Requires with Visual Studio 2010 or 2012 and Silverlight. Dưới đây là một số hình ảnh về các control trong DotnetBar.   Metro User Interface  controls with Metro Tiles, toolba...

Announcing Flutter 2

  Phụ lục: Flutter on the web Flutter 2 on desktops, foldables, and embedded devices The growing Flutter ecosystem Dart: The secret sauce behind Flutter Flutter 2: Available now Hôm nay, chúng tôi sẽ công bố Flutter 2: một bản nâng cấp lớn cho Flutter cho phép các nhà phát triển tạo các ứng dụng đẹp, nhanh chóng và di động cho bất kỳ nền tảng nào. Với Flutter 2, bạn có thể sử dụng cùng một cơ sở mã để gửi các ứng dụng gốc cho năm hệ điều hành: IOS, Android, Windows, macOS và Linux; cũng như trải nghiệm web nhắm mục tiêu các trình duyệt như Chrome, Firefox, Safari hoặc Edge. Flutter thậm chí có thể được nhúng vào ô tô, TV và thiết bị gia dụng thông minh, mang đến trải nghiệm di động và lan tỏa nhất cho thế giới điện toán xung quanh. Mục tiêu của chúng tôi là thay đổi cơ bản cách các nhà phát triển nghĩ về việc xây dựng ứng dụng, bắt đầu không phải với nền tảng bạn đang nhắm mục tiêu mà là với trải nghiệm bạn muốn tạo. Flutter cho phép bạn tạo ra những trải nghiệm tuyệt đẹp trong đó ...

Jetpack Compose VS SwiftUI !VS Flutter

  Việc phát triển Android đã trở nên dễ dàng hơn khi các bản cập nhật liên tục đến. Sau bản cập nhật 2020.3.1, rất nhiều thứ đã thay đổi. Nhưng thay đổi chính mà tôi nghĩ hầu hết các nhà phát triển phải chờ đợi là Jetpack Compose cho ứng dụng sản xuất. Và Kotlin là lựa chọn duy nhất cho jetpack Compose, cũng là ngôn ngữ được ưu tiên. Để biết thêm chi tiết hoặc các thay đổi trên Jetpack Compose, bạn có thể truy cập vào https://developer.android.com/jetpack/compose Tương tự, IOS Development cũng cung cấp một tùy chọn để phát triển khai báo, SwiftUI. Trong IDE, không có thay đổi nào do điều này. Nhưng khái niệm gần giống với Jetpack Compose. Thay vì bảng phân cảnh, chúng tôi tạo giao diện người dùng bằng Swift. Để biết thêm chi tiết hoặc các thay đổi trên SwiftUI, hãy truy cập https://developer.apple.com/xcode/swiftui/ Hãy xem cách cả hai hoạt động bằng cách sử dụng một dự án demo. Tôi đã lấy một số ví dụ về số lần chạm tương tự của Flutter. 1. Android Jetpack Compose Chúng tôi có thể...