Các lỗi thiết kế cần tránh.

Hầu hết các lỗi thường xảy ra khi kết hợp lẫn lộn giữa mô hình mệnh lệnh và mô hình khai báo. Hãy duy trì một ranh giới rõ ràng cho trạng thái.

Kết hợp tính năng đẩy/rút với các trang.

Không sử dụng các phương thức `Navigator.push` hoặc `Navigator.pop` cho các ngăn xếp đã được quản lý bởi `List<PageEntry>`.

Thành phần giao diện ở trạng thái nào.

Không nên đưa các đối tượng (instances) của Widget vào siêu dữ liệu của trang. Chỉ nên sử dụng các khóa (keys) và các định danh tương tự như đường dẫn (route).

Khóa không giới hạn.

Không được sử dụng lại các giá trị `key` giống nhau trong cùng một ngăn xếp `PageEntry`.

Danh sách kiểm tra cho việc di chuyển.

Sử dụng danh sách kiểm tra này trong quá trình đánh giá lại mã nguồn để đảm bảo tính nhất quán của kiến trúc hệ thống.

Danh sách kiểm tra.

Tốt so với xấu.

// Không tốt: kết hợp lệnh và khai báo cho cùng một đối tượng.
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];

// Tốt: chỉ cập nhật trạng thái khai báo.
setState(() {
  _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
Mẹo đánh giá.

Trong quá trình kiểm tra mã nguồn, hãy theo dõi... Ai là người sở hữu các đột biến liên quan đến "stack"? và từ chối những thay đổi làm ảnh hưởng đến cùng một cấu trúc dữ liệu thông qua nhiều giao diện lập trình ứng dụng (API) khác nhau.