Антипатерни, яких слід уникати
Більшість багів виникає, коли змішують імперативну й декларативну моделі. Дотримуйтеся чіткої межі стану.
Змішування push/pop зі сторінками
Не викликайте Navigator.push/pop для стеків, які вже керуються List<PageEntry>.
Widget у стані
Не поміщайте екземпляри Widget у метадані сторінки. Залишайте лише ключі та ідентифікатори на кшталт маршрутів.
Ключі без обмежень
Не перевикористовуйте однакові значення PageEntry.key в одному стеку.
Чекліст міграції
Використовуйте цей чекліст під час рев'ю рефакторингу, щоб архітектура залишалася узгодженою.
Чекліст
Добре та погано
// Погано: змішувати імперативний і декларативний підходи для одного стеку
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
// Добре: оновлювати лише декларативний стан
setState(() {
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
Порада для рев'ю
Під час рев'ю коду відстежуйте хто відповідає за мутації стеку і відхиляйте зміни, що змінюють той самий стек через кілька API.
Попередній
Обробка поверненняНаступний
Вступ