Flutter có nhiều cách tiếp cận state management — từ tích hợp sẵn (setState, InheritedWidget) tới các thư viện phổ biến (Provider, Riverpod, Bloc, GetX). Hiểu các lựa chọn chính, triết lý của chúng, và các đánh đổi giúp chọn cách tiếp cận đúng cho một ứng dụng.
Các cách tiếp cận tích hợp sẵn
setState → state cục bộ trong một StatefulWidget (đơn giản; không mở rộng cho state chia sẻ)
InheritedWidget → cách tích hợp sẵn để chia sẻ state xuống cây (nền tảng mà nhiều
thư viện xây dựng trên đó; rườm rà khi dùng trực tiếp)
Provider — đơn giản và được khuyến nghị
PROVIDER → được khuyến nghị chính thức, xây dựng trên InheritedWidget; đơn giản, dùng rộng rãi:
→ cung cấp state tại một điểm trong cây; các con cháu "watch"/consume nó
→ ChangeNotifier giữ state và thông báo cho listener → UI rebuild khi thay đổi
→ tốt cho nhiều ứng dụng; đường cong học tập nhẹ nhàng
