| ListView.builder Vs GridView.builder: Quản Lý Danh Sách Lớn Hiệu Năng Cao

Được viết bởi thanhdt vào ngày 01/06/2026 lúc 20:13 | 18 lượt xem

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.