const constructor tạo object ngay lúc compile, và hai biểu thức const giống hệt nhau trả về cùng một instance (canonicalization).
Lợi ích trong Flutter đến từ chính điều đó: khi widget cha rebuild, element so widget mới với widget cũ. Nếu widget con là const, widget "mới" chính là object cũ (identical) → Flutter bỏ qua việc build lại subtree đó.
// Mỗi lần build tạo Padding mới → subtree phải xét lại
Padding(padding: EdgeInsets.all(8), child: Text('Tiêu đề'))
// Cùng một instance qua mọi lần build → được bỏ qua
const Padding(padding: EdgeInsets.all(8), child: Text('Tiêu đề'))Điều kiện: mọi tham số phải là hằng lúc compile. Text(user.name) không const được vì user.name là giá trị runtime.
Thói quen tốt: bật lint prefer_const_constructors (có trong flutter_lints) để IDE nhắc chỗ thiếu const, và tách phần UI tĩnh thành widget riêng có constructor const.
Lưu ý: const giảm công build chứ không khiến widget "không bao giờ rebuild". Widget const vẫn build lại khi InheritedWidget mà nó đọc (như Theme.of(context)) thay đổi. Nó cũng không thay được việc chia nhỏ widget để giới hạn phạm vi setState.