Vengtini antipavyzdžiai
Dauguma klaidų atsiranda, kai maišomi imperatyvūs ir deklaratyvūs modeliai. Laikykite griežtą būsenos ribą.
push/pop maišymas su puslapiais
Nenaudokite `Navigator.push`/`pop` stackams, 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 stack'e.
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 stack'ui
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 stack'o pakeitimus ir atminkite pakeitimus, kurie tą patį stack'ą modifikuoja per kelias API.