Việc hiển thị danh sách hàng trăm, hàng ngàn phần tử (như danh sách sản phẩm, tin nhắn) nếu không được tối ưu sẽ làm ngốn sạch RAM và gây đơ ứng dụng.
1. Hạn chế của ListView/GridView thông thường
Khi khai báo ListView(children: [...]), Flutter sẽ khởi tạo toàn bộ các Widget con cùng một lúc, ngay cả những phần tử chưa được cuộn tới trên màn hình. Điều này cực kỳ lãng phí tài nguyên hệ thống.
2. Giải pháp tối ưu: Cơ chế lười tải (Lazy Loading) bằng .builder
ListView.builder: Chỉ khởi tạo và dựng Widget con khi nó chuẩn bị xuất hiện trên màn hình hiển thị của người dùng (Viewport). Khi cuộn qua, các Widget cũ sẽ được giải phóng khỏi bộ nhớ.
GridView.builder: Tương tự như ListView nhưng hiển thị dưới dạng lưới (Grid) nhiều cột thích hợp cho các trang trưng bày sản phẩm thương mại điện tử.
3. Các tham số cốt lõi cần nhớ
itemCount: Xác định tổng số lượng phần tử.
itemBuilder: Hàm callback trả về Widget cho từng chỉ mục index.