Негатыўныя шаблоны, якіх варта пазбегнуць.

Большасць праблем узнікае, калі змешваюцца імперытыўныя і дэкларатыўныя мадэлі. Заўсёды захоўвайце строгую мяжу стану.

Паслядоўнае выкарыстанне метадаў "push" і "pop" у спалучэнні са старонкамі.

Не выклікайце метады Navigator.push і Navigator.pop для стосаў, якія ўжо кіруюцца класам List<PageEntry>.

Віджэт у стане.

Не ўключайце экземпляры віджэтаў у метададзеныя старонкі. Пакідайце толькі ключы і ідэнтыфікатары, падобныя на маршруты.

Неабмежаваныя ключы.

Не выкарыстоўвайце аднолькавыя значэнні для атрыбута "key" у розных элементах "PageEntry" у адным і тым жа стэку.

Чек-ліст для міграцыі.

Выкарыстоўвайце гэты спіс праверкі падчас прагляду перапрацоўкі кода, каб захаваць аднастайнасць архітэктуры.

Спіс праверкі.

Добра супраць зла.

// Няправільна: змяшэнне імпэратыўнай і дэкларатыўнай канструкцый для адной і той жа структуры даных
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];

// Правільна: абнаўленне толькі дэкларатыўнага стану
setState(() {
  _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
Парада для аглядаў.

Падчас прагляду кода, адсочвайце... хто валодае мутацыямі ў структуры даных? і адхіляць змены, якія змяняюць адну і тую ж структуру даных праз розныя інтэрфейсы праграмавання.