💊Capsule
🔥Key
1⃣
🟢دو نوع Key توی فلاتر داریم :
✅GlobalKey
✅LocalKey
✔️هر دو subclass کلاس Key هستن.
✅تفاوت اول و مهم این دو در این هست که GlobalKey باید توی کل اپ unique باشه.
یعنی اگه به یه ویجت توی یک فریم یه GloablKey دادید، دیگه نمیتونید از اون GlobalKey برای ویجت دیگه و توی همون فریم استفاده کنید.
❌استفاده از یک GlobalKey یکسان برای دو ویجت متفاوت در یک فریم یکسان ممنوع.
ولی LocalKey ها اینطور نیستن و شما میتونید برای دو ویجت متفاوت و در یک فریم از یک LocalKey یکسان استفاده کنید.
🔥به شرطی که :
✔️اون دو ویجت فرزند مشترک یک ویجت پدر نباشند.
مثلا هر دو نباید فرزند مشترک یک column یا یک stack باشن.
🔥علاوه بر اون اگه از Navigator 2 استفاده میکنید باید به page هاتون LocalKey بدید و نمیتونید از یک LocalKey یکسان برای دو page مختلف استفاده کنید.
#capsule
#advanced
🔥Key
1⃣
🟢دو نوع Key توی فلاتر داریم :
✅GlobalKey
✅LocalKey
✔️هر دو subclass کلاس Key هستن.
✅تفاوت اول و مهم این دو در این هست که GlobalKey باید توی کل اپ unique باشه.
یعنی اگه به یه ویجت توی یک فریم یه GloablKey دادید، دیگه نمیتونید از اون GlobalKey برای ویجت دیگه و توی همون فریم استفاده کنید.
❌استفاده از یک GlobalKey یکسان برای دو ویجت متفاوت در یک فریم یکسان ممنوع.
ولی LocalKey ها اینطور نیستن و شما میتونید برای دو ویجت متفاوت و در یک فریم از یک LocalKey یکسان استفاده کنید.
🔥به شرطی که :
✔️اون دو ویجت فرزند مشترک یک ویجت پدر نباشند.
مثلا هر دو نباید فرزند مشترک یک column یا یک stack باشن.
🔥علاوه بر اون اگه از Navigator 2 استفاده میکنید باید به page هاتون LocalKey بدید و نمیتونید از یک LocalKey یکسان برای دو page مختلف استفاده کنید.
#capsule
#advanced
❤14👍4🔥4
💊Capsule
🔥GlobalKey
2⃣
🟢اولین کاربرد مهم GlobalKey برای این هست که به context یک ویجت و همچنین به state اون (در صورتی که ویجت استیت فول) باشه، در بقیه قسمت های اپ دسترسی داشته باشیم.
✅با استفاده از دو variable به نام های
✔️currentContext
✔️currentState
میتونیم به این منظور برسیم.
🔥علت اینکه توی نام از current استفاده شده چون که این موارد میتونن در طول lifetime یک GlobalKey تغییر کنن.
مثال)
✅با دادن GlobalKey به نویگیتور به جای استفاده از
Navigator.of(context).push
میگیم
navigatorKey.currentState.push
🔥این کار از لحاظ پرفرمانس عملکرد بهتری داره.
🟢به همین صورت میتونید به ویجت مورد نظر GlobalKey بدید و در بقیه قسمت های اپ به state اون دسترسی پیدا کنین و متد های داخل state اش رو کال کنید (مثل نویگیتور)
یا به contextاش دسترسی پیدا کنید.
❌بیش از اندازه استفاده نکنید (مطابق نیاز)
#capsule
#advanced
🔥GlobalKey
2⃣
🟢اولین کاربرد مهم GlobalKey برای این هست که به context یک ویجت و همچنین به state اون (در صورتی که ویجت استیت فول) باشه، در بقیه قسمت های اپ دسترسی داشته باشیم.
✅با استفاده از دو variable به نام های
✔️currentContext
✔️currentState
میتونیم به این منظور برسیم.
🔥علت اینکه توی نام از current استفاده شده چون که این موارد میتونن در طول lifetime یک GlobalKey تغییر کنن.
مثال)
✅با دادن GlobalKey به نویگیتور به جای استفاده از
Navigator.of(context).push
میگیم
navigatorKey.currentState.push
🔥این کار از لحاظ پرفرمانس عملکرد بهتری داره.
🟢به همین صورت میتونید به ویجت مورد نظر GlobalKey بدید و در بقیه قسمت های اپ به state اون دسترسی پیدا کنین و متد های داخل state اش رو کال کنید (مثل نویگیتور)
یا به contextاش دسترسی پیدا کنید.
❌بیش از اندازه استفاده نکنید (مطابق نیاز)
#capsule
#advanced
🔥9👍2