જે બાબતોથી દૂર રહેવું જોઈએ.

મોટાભાગની સમસ્યાઓ ત્યારે ઊભી થાય છે જ્યારે આદેશાત્મક (imperative) અને ઘોષણાત્મક (declarative) મોડેલોને મિશ્રિત કરવામાં આવે છે. હંમેશાં એક સ્પષ્ટ અને મજબૂત સ્ટેટ બોર્ડર (state boundary) જાળવો.

"પુશ/પોપ" અને "પેજ"નું મિશ્રણ.

`Navigator.push` અથવા `Navigator.pop` ફંક્શનનો ઉપયોગ એવા સ્ટેક્સ માટે ન કરો જે પહેલાથી જ `List<PageEntry>` દ્વારા નિયંત્રિત હોય.

વિજેટની સ્થિતિ.

"વિજેટના ઇન્સ્ટન્સને પેજ મેટાડેટામાં ન મૂકો. ફક્ત કી (key) અને રૂટ (route) જેવી ઓળખકર્તાઓ જ રાખો."

અનબાઉન્ડેડ કી (unbounded key) એટલે કે અમર્યાદિત કી.

એક જ સ્ટેકમાં સમાન `PageEntry.key` મૂલ્યોનો ફરીથી ઉપયોગ કરશો નહીં.

સ્થળાંતર માટેની તપાસણી યાદી.

આ ચેકલિસ્ટનો ઉપયોગ કોડને ફરીથી ગોઠવવાની પ્રક્રિયા દરમિયાન કરો, જેથી આર્કિટેક્ચર એકસમાન રહે.

ચકાસણી યાદી.

સારું વિરુદ્ધ ખરાબ.

// ખરાબ: એક જ સ્ટેક માટે આદેશક અને ઘોષણાત્મક બંનેનો ઉપયોગ કરવો
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];

// સારું: ફક્ત ઘોષણાત્મક સ્ટેટને જ અપડેટ કરો
setState(() {
  _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
સમીક્ષા માટેની ટિપ્પણી.

કોડની સમીક્ષા કરતી વખતે, નીચેની બાબતો પર ધ્યાન આપો: "સ્ટેક મ્યુટેશનનો માલિક કોણ છે?" અથવા "સ્ટેક મ્યુટેશનની માલિકી કોની પાસે છે?" અને એવા ફેરફારોને નકારો જે એક જ ડેટા સ્ટ્રક્ચરને એક સાથે અનેક એપ્લિકેશન પ્રોગ્રામિંગ ઇન્ટરફેસ (API) દ્વારા બદલી નાખે છે.