Mga anti-pattern na dapat iwasan

Karamihan sa mga bug ay lumilitaw kapag pinaghahalo ang imperative at declarative na mga modelo. Panatilihin ang mahigpit na hangganan ng estado.

Paghahalo ng push/pop sa mga page

Huwag tawagin ang Navigator.push/pop para sa mga stack na kontrolado na ng List<PageEntry>.

Widget sa estado

Huwag ilagay ang mga instance ng Widget sa metadata ng page. Panatilihin lamang ang mga key at mga identifier na kahawig ng ruta.

Mga duplicate na key

Huwag muling gamitin ang magkakaparehong halaga ng PageEntry.key sa iisang stack.

Checklist ng migrasyon

Gamitin ang checklist na ito sa mga review ng refactor upang manatiling pare-pareho ang arkitektura.

Checklist

Mabuti vs Masama

// Masama: pinaghahalo ang imperative at declarative para sa parehong stack
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];

// Mabuti: i-update lang ang declarative na estado
setState(() {
  _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
Tip sa review

Sa code review, bantayan kung sino ang responsable sa mga pagbabago sa stack at tanggihan ang mga pagbabagong nagbabago sa parehong stack sa pamamagitan ng maraming API.