Vengtini antipavyzdžiai
Dauguma klaidų atsiranda, kai maišomi imperatyvūs ir deklaratyvūs metodai. Laikykite griežtą būsenos ribą.
push/pop maišymas su puslapiais
Nenaudokite `Navigator.push`/`pop` stekams, kuriuos jau valdo `List<PageEntry>`.
Widget būsenoje
Nedėkite `Widget` egzempliorių į puslapio metaduomenis. Palikite tik raktus ir į maršrutus panašius identifikatorius.
Neriboti raktai
Nenaudokite pasikartojančių `PageEntry.key` reikšmių tame pačiame steke.
Migracijos kontrolinis sąrašas
Naudokite šį kontrolinį sąrašą refaktoravimo peržiūrų metu, kad architektūra išliktų nuosekli.
Kontrolinis sąrašas
Gerai vs blogai
// Blogai: imperatyvaus ir deklaratyvaus metodo maišymas tam pačiam stekui
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
// Gerai: atnaujinkite tik deklaratyvią būseną
setState(() {
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
Peržiūros patarimas
Kodo peržiūros metu stebėkite kas valdo steko pakeitimus ir atmeskite pakeitimus, kurie tą patį steką modifikuoja per kelias API.