- Future: đại diện một giá trị sẽ có trong tương lai (thành công hoặc lỗi). Ví dụ: một request HTTP.
- Stream: đại diện chuỗi nhiều giá trị theo thời gian (0..n sự kiện). Ví dụ: dữ liệu WebSocket, sự kiện chạm, thay đổi DB.
async/await:
- Hàm gắn async trả về một Future; await tạm dừng hàm cho tới khi Future hoàn tất rồi lấy giá trị, viết bất đồng bộ trông như đồng bộ.
- Bắt lỗi bằng try/catch.
- Với Stream, duyệt bằng await for hoặc .listen().
Trong UI, FutureBuilder/StreamBuilder dựng lại widget theo trạng thái của Future/Stream.