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

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

⭕️پشتیبانی:
@PureCoder_support
@MohammadTaherri
Download Telegram
⚡️⚡️Flutter Key⚡️⚡️
1⃣

توی چند پست آینده در مورد key ها صحبت میکنیم.
انواع اون ها رو بررسی میکنیم و کاربرد هر کدومشون رو میگیم.

🔥توی فلاتر یه کلاس به اسم Key داریم که abstract هست و پایه و اساس کلاس های دیگه هست.

این کلاس دو نوع فرزند داره
LocalKey
GlobalKey

این ها کلاس هایی هستند که از Key ارث بری کردند و دو نوع مختلف Key رو با کاربرد های مختلف برای ما میسازند.

پست های بعدی رو از دست ندید. 😍
#key
#flutter_key
#local_key
#global_key
1👍1
⚡️⚡️Flutter Key⚡️⚡️
2⃣

🔥اولین نکته و اولین تفاوت این دو نوع Key رو از اسمشون میگیریم.

✔️کلید های global باید در کل اپ یکتا باشن ، یعنی اینکه اگه به یک ویجتی یه GlobalKey دادیم اون key رو دیگه نمیتونم به ویجت دیگه ای بدیم.

✔️اما LocalKey ها فقط در یک sub tree بررسی میشن یعنی اینکه میتونیم به دو تا ویجت LocalKey یکسان بدیم به شرط اینکه در یک sub tree نباشن.

🤔حالا اینکه این sub tree رو چگونه تحلیل کنیم و از کجا بفهمیم که کجاها مجاز نیستیم از LocalKey یکسان استفاده کنیم بستگی به مورد استفاده داره که به موقش در موردش صحبت میکنیم.

#key
#flutter_key
#local_key
#global_key
⚡️⚡️Flutter Key⚡️⚡️
3⃣

خب بریم سر وقت مهمترین تفاوت بین global ها و local ها :

🔥تفاوت اصلی اینجاست که GlobalKey ها حافظه دارن و LocalKey ها هیچ حافظه ای ندارن.

یعنی چی؟ وقتی که به یه ویجتی یه دونه GlobalKey اختصاص میدیم ، GlobalKey یه کار مهم میکنه و context ویجت رو توی خودش ذخیره میکنه (BuildContext).

✔️در نتیجه بعد از اون هر موقع و هر جایی با استفاده از اون key میتونیم به context ویجت دسترسی داشته باشیم و چون خود context هم اطلاعات دیگه از قبیل widget و State رو توی خودش داره میتونیم به اون ها هم دسترسی داشته باشیم.

✔️علاوه بر اون اگه اون ویجت توی درخت جابجا بشه و context اش تغییر کنه باز هم به context جدید دسترسی داریم.

🔥یه نکته هم بگیم که همه ویجت ها یه BuildContext اختصاصی برای خودشون دارن، همه ویجت ها و نه فقط استیت لس و استیت فول هایی که خودمون میسازیم.
همه ویجت شامل Text و Container و... یه BuildContext اختصاصی دارن که این context موقع ساخته شدن ویجت توی درخت ساخته میشه.

برخلاف global ها LocalKey هیچ حافظه ای نداره و هیچی توی خودش نگه نمیداره.

پس با توجه به این نکات :

وقتی از GlobalKey استفاده میکنیم که بعدن و یه جای دیگه از برنامه نیاز داشته باشیم به context یا state یا خود اون widget دسترسی داشته باشیم.

وقتی از LocalKey ها استفاده میکنیم که فقط بخوایم به برچسب به اون ویجت بزنیم و با اون برچسب اون ویجت رو از بقیه متمایز کنیم.

🔥پس GlobalKey ها حافظه دارن و LocalKey ها صرفن یه برچسب هستن.

🔥البته GlobalKey ها علاوه بر داشتن حافظه میتونن کار برچسب گذاری (متمایز کردن) رو هم انجام بدن ولی اگه هدفمون فقط متمایز کردن ویجت از بقیه هست و نمیخایم بعدن یه جای دیگه به اطلاعاتش دسترسی داشته باشیم از LocalKey استفاده میکنیم.
#key
#flutter_key
#local_key
#global_key