Đặt SafeArea đúng cấp, hiểu minimum và lý do MediaQuery.padding thay đổi trong subtree đã được xử lý inset.
Tách confirmDismiss và onDismissed để hủy thao tác vuốt hoặc xóa đúng mục khỏi danh sách local.
Tạo hai bộ đếm trong hai tab để kiểm tra state được giữ trong cây widget và hiểu chi phí...
Đặt một component vào vùng rộng 360 logical pixel để thấy vì sao kích thước cửa sổ không thay thế...
Trả bool từ dialog qua Navigator.pop, phân biệt false với null và chỉ cập nhật giao diện khi context gọi...
Sửa một Row có tiêu đề dài bằng Expanded, phân biệt giới hạn tight và loose, rồi kiểm tra đúng...
Dựng hai hàng có bộ đếm riêng để hiểu key ổn định, vị trí widget và lý do UniqueKey mới...
Tổ chức Form và TextFormField với GlobalKey ổn định, validator rõ ràng và luồng validate rồi save có thể kiểm...
Tổ chức TextEditingController trong State, cập nhật text và selection cùng lúc, tránh reset nội dung khi widget rebuild.
Hiểu cách ValueNotifier dùng phép so sánh bằng, cập nhật list bằng giá trị mới và quản lý vòng đời...
© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.