Pure Coder
791 subscribers
189 photos
30 videos
8 files
151 links
⭕️آدرس سایت:
https://purecoder.ir

⭕️گروه پرسش و پاسخ:
@purecoder_gp

⭕️پشتیبانی:
@PureCoder_support
@MohammadTaherri
Download Telegram
💊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
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
🔥9👍2
💊Capsule
🔥GlobalKey
3️⃣

🟢در مورد کاربرد اول GlobalKey گفتیم که میتونیم با استفاده از اون به context و state یک ویجت برسیم.

🔥با استفاده از state میتونیم به متد های داخل state ویجت مورد نظر دسترسی داشته باشیم و کالشون کنیم.

مثلا برای Navigator , Scaffold و ... میتونه مفید باشه.

سعی کنید برای ویجت هایی که خودتون مینویسید از این مورد استفاده نکنید مگر اینکه واقعا لازم بود.

خیلی مواقع راه حل استفاده از استیت منجمنت هست.

🔥با استفاده از context هم میتونیم کار هایی از قبیل :‌

✔️دسترسی به renderObject ویجت مورد نظر

✔️نوتیف فرستادن به وسیله context

✔️و...

رو انجام داد.
#capsule
🔥7👍2