Антипаттернҳои пешгиришаванда

Аксари хатоҳо вақте рух медиҳанд, ки моделҳои амрӣ ва декларативӣ омехта мешаванд. Марзи қатъии ҳолатро нигоҳ доред.

Омехтани push/pop бо саҳифаҳо

Барои stack-ҳое, ки аллакай аз ҷониби List<PageEntry> идора мешаванд, Navigator.push/pop-ро истифода набаред.

Widget дар ҳолат

Экземплярҳои Widget-ро ба метамаълумоти саҳифа нагузоред. Танҳо keys ва идентификаторҳои ба route монандро нигоҳ доред.

Калидҳои такрорӣ

Арзишҳои такрории PageEntry.key-ро дар як stack дубора истифода набаред.

Рӯйхати санҷиши муҳоҷират

Барои яксон нигоҳ доштани меъморӣ, ҳангоми баррасии рефакторинг ин рӯйхати санҷишро истифода баред.

Рӯйхати санҷиш

Хуб / бад

// Бад: омехтани усули амрӣ ва декларативӣ барои ҳамон stack
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];

// Хуб: танҳо ҳолати декларативиро навсозӣ кунед
setState(() {
  _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
Маслиҳати баррасӣ

Ҳангоми баррасии код, пайгирӣ кунед ки барои тағйироти stack масъул аст ва тағйироте, ки ҳамон stack-ро тавассути чанд API тағйир медиҳанд, рад кунед.