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.

Ankstesnis

Perdangos

Kitas

Įvadas