Khi bắt đầu với Flutter, bạn sẽ nghe rất nhiều về “state”. Nghe có vẻ trừu tượng, nhưng thật ra nó chỉ là dữ liệu có thể thay đổi và ảnh hưởng trực tiếp đến giao diện ứng dụng.
Ví dụ: bạn bấm vào nút tăng số → con số trên màn hình thay đổi. Đó chính là “state” đang hoạt động.

1. State là gì?
Hãy tưởng tượng mỗi widget trong Flutter giống như một bức ảnh chụp nhanh (snapshot) của giao diện. Khi dữ liệu thay đổi, Flutter sẽ so sánh ảnh cũ với dữ liệu mới rồi rebuild lại phần bị ảnh hưởng.

Điểm hay là Flutter đủ thông minh để chỉ vẽ lại những phần cần thiết chứ không “vẽ lại toàn bộ” gây nặng máy.
2. Hai loại state trong ứng dụng
2.1 App-wide State
Đây là dữ liệu ảnh hưởng đến toàn bộ app, ví dụ:
2.2 Widget State
Đây là dữ liệu chỉ liên quan đến một widget cụ thể, ví dụ:
3. Stateless Widget
Stateless nghĩa là không tự thay đổi theo thời gian. Chúng chỉ hiển thị dữ liệu tĩnh hoặc dữ liệu được truyền từ bên ngoài.
Ví dụ:
Đặc điểm của Stateless Widget:
4. Stateful Widget
Ngược lại, Stateful Widget có thể giữ dữ liệu bên trong và thay đổi theo thời gian.
Ví dụ: app đếm số mà Flutter cung cấp khi bạn tạo project mới:
Giải thích:
5. Khi nào dùng Stateless vs Stateful?
-
Stateful: khi dữ liệu thay đổi trong runtime, ví dụ: form nhập, animation, bộ đếm, danh sách fetch từ API.
6. Tổng kết