BLoC (Business Logic Component) tách logic khỏi UI bằng luồng dữ liệu một chiều dựa trên Stream.
- UI phát ra Event (ví dụ
LoadUsers). - BLoC nhận event, xử lý (gọi API/DB), rồi emit State mới (
Loading→Loaded/Error). - UI lắng nghe stream state qua
BlocBuilder/BlocListenervà dựng lại theo state.
Ưu điểm: logic thuần Dart nên dễ test, tách bạch rõ ràng, hợp app lớn nhiều người. Cubit là biến thể gọn hơn: bỏ event, gọi thẳng method để emit state.
Đánh đổi: nhiều boilerplate hơn setState/Provider; với màn hình đơn giản có thể là thừa.