بچنے کے قابل اینٹی پیٹرنز
زیادہ تر بگز اس وقت ہوتے ہیں جب imperative اور declarative ماڈلز کو ملایا جاتا ہے۔ اسٹیٹ کی حد سخت رکھیں۔
pages کے ساتھ push/pop ملانا
List<PageEntry> کے ذریعے پہلے ہی کنٹرول ہونے والے stacks پر Navigator.push/pop استعمال نہ کریں۔
اسٹیٹ میں Widget
Page metadata میں Widget instances نہ رکھیں۔ صرف keys اور route جیسے identifiers رکھیں۔
غیر محدود keys
اسی stack میں duplicate PageEntry.key values دوبارہ استعمال نہ کریں۔
مائیگریشن چیک لسٹ
ریفیکٹر جائزوں کے دوران یہ چیک لسٹ استعمال کریں تاکہ architecture مستقل رہے۔
چیک لسٹ
اچھا بمقابلہ خراب
// Bad: mixing imperative and declarative for same stack
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
// Good: update only declarative state
setState(() {
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
جائزہ ٹپ
code review کے دوران stack mutations کا ذمہ دار کون ہے کو track کریں اور ایسی تبدیلیاں رد کریں جو ایک ہی stack کو کئی APIs سے mutate کریں۔
پچھلا
Back Handlingاگلا
تعارف