Խուսափելի հակաօրինակներ

Սխալների մեծ մասը առաջանում է, երբ imperative և declarative մոտեցումները խառնվում են։ Պահիր state-ի հստակ սահմանագիծ։

push/pop-ի խառնումը pages-ի հետ

Մի կանչիր Navigator.push/pop այն stack-երի համար, որոնք արդեն կառավարվում են List<PageEntry>-ով։

Widget-ը state-ում

Widget instance-ներ մի տեղադրիր page metadata-ի մեջ։ Պահիր միայն key-եր և route-ի նման նույնացուցիչներ։

Կրկնվող key-եր

Մի օգտագործիր նույն PageEntry.key արժեքը նույն stack-ի մեջ մեկից ավելի անգամ։

Միգրացիայի ստուգաթերթ

Refactor-ի վերանայումների ընթացքում օգտագործիր այս ստուգաթերթը, որպեսզի ճարտարապետությունը մնա հետևողական։

Ստուգաթերթ

Լավն ընդդեմ վատի

// Վատ. imperative և declarative խառը մոտեցում նույն stack-ի համար
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];

// Լավ. թարմացրու միայն declarative state-ը
setState(() {
  _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
Վերանայման հուշում

Code review-ի ընթացքում հետևիր՝ ով է տիրապետում stack-ի փոփոխություններին և մերժիր այն փոփոխությունները, որոնք նույն stack-ը փոխում են մի քանի API-ներով։