Vòng đời của một Stateful Widget trong Flutter là một quá trình phức tạp, với nhiều giai đoạn và các phương thức mà bạn có thể ghi đè để tùy chỉnh hành vi của widget. Nắm vững vòng đời này sẽ giúp bạn quản lý trạng thái và tài nguyên hiệu quả hơn trong ứng dụng của mình. Dưới đây là mô tả chi tiết về vòng đời của một Stateful Widget, cùng với ví dụ minh họa cụ thể cho từng giai đoạn.
Khi bạn tạo một Stateful Widget, phương thức createState()
sẽ được gọi. Đây là bước đầu tiên trong vòng đời của widget.
createState()
: Phương thức này chỉ được gọi một lần khi widget được tạo ra. Nó tạo ra một đối tượng State
, nơi bạn sẽ định nghĩa các biến trạng thái và logic của widget.Sau khi phương thức createState()
được gọi, đối tượng State
sẽ trải qua các bước sau:
Đây là phương thức đầu tiên trong vòng đời của đối tượng State
, và nó được gọi ngay sau khi đối tượng State
được tạo.
initState()
chỉ được gọi một lần trong vòng đời của widget.Sau khi initState()
được gọi, phương thức didChangeDependencies()
sẽ được gọi. Phương thức này được gọi mỗi khi có sự thay đổi trong các InheritedWidget
mà widget này phụ thuộc vào.
InheritedWidget
.Phương thức build()
sẽ được gọi để xây dựng giao diện người dùng cho widget. Đây là một trong những phương thức quan trọng nhất trong vòng đời của widget.
setState()
.Phương thức setState()
được sử dụng để cập nhật trạng thái của widget. Khi được gọi, nó sẽ kích hoạt một chu kỳ xây dựng lại (rebuild).
setState()
để Flutter biết rằng widget cần được tái xây dựng.Khi trạng thái của widget thay đổi thông qua setState()
, vòng đời sẽ trở lại với việc gọi phương thức build()
để cập nhật giao diện người dùng:
build()
sẽ được gọi lại mỗi khi có sự thay đổi trong trạng thái. Tại đây, widget sẽ được cập nhật giao diện dựa trên trạng thái hiện tại.Khi widget không còn được sử dụng và cần giải phóng tài nguyên, các phương thức sau sẽ được gọi:
Phương thức deactivate()
sẽ được gọi khi widget bị loại bỏ khỏi cây widget nhưng vẫn còn ở trong bộ nhớ.
Cuối cùng, phương thức dispose()
sẽ được gọi ngay trước khi đối tượng State
bị hủy. Đây là nơi bạn nên giải phóng các tài nguyên mà bạn đã tạo trong initState()
.
initState()
. Sau khi gọi dispose()
, đối tượng State
sẽ không còn tồn tại.Vòng đời của một Stateful Widget trong Flutter có thể được tóm tắt theo thứ tự sau:
createState()
initState()
didChangeDependencies()
build()
setState() → build()
deactivate()
, dispose()
Việc hiểu rõ về vòng đời của một Stateful Widget trong Flutter giúp bạn quản lý trạng thái và tài nguyên hiệu quả hơn trong ứng dụng của mình. Mỗi phương thức trong vòng đời này có một vai trò quan trọng và biết cách sử dụng chúng sẽ giúp bạn tối ưu hóa ứng dụng, cải thiện hiệu suất và trải nghiệm người dùng. Hãy luôn chú ý đến việc dọn dẹp tài nguyên và trạng thái để tránh các vấn đề về hiệu suất và bộ nhớ trong ứng dụng của bạn.