Quá trình rendering của Flutter liên quan đến ba cây — cây Widget (cấu hình), cây Element (các widget được khởi tạo, được quản lý), và cây RenderObject (layout và painting). Hiểu pipeline này giải mã cách Flutter biến widget thành pixel một cách hiệu quả.
Ba cây
Cây WIDGET → CẤU HÌNH bất biến (thứ bạn viết: mô tả của UI)
→ rẻ để tạo/tạo lại; được rebuild thường xuyên (build() trả về widget mới)
Cây ELEMENT → các widget được KHỞI TẠO; quản lý lifecycle và LIÊN KẾT widget với render
object; TỒN TẠI qua các rebuild (đây là chìa khóa của hiệu quả)
Cây RENDEROBJECT → thực hiện LAYOUT, PAINTING, và hit-testing thực sự (các đối tượng nặng)
→ tốn kém; được TÁI SỬ DỤNG và cập nhật (không tạo lại) qua các rebuild
