چقدر با دیزاین پترن ها آشنایی دارین؟
کدوم ها رو بلدین؟
کدوم ها رو صرفا سینتکسش رو بلدین؟
کدوم ها رو به صورت کاربردی ازش استفاده میکنین؟
به غیر از سینگلتون 😅😝
کدوم ها رو بلدین؟
کدوم ها رو صرفا سینتکسش رو بلدین؟
کدوم ها رو به صورت کاربردی ازش استفاده میکنین؟
به غیر از سینگلتون 😅😝
💊Capsule
🔥extends vs implement
1⃣
🟢واژه extend به معنای گسترش دادن یا توسعه دادن هست
B extends A
یعنی اینکه B داره A رو توسعه میده (گسترش میده)
🟢واژه implement به معنای پیاده سازی یا اجرا کردن هست
B implement A
یعنی B داره A رو پیاده سازی میکنه.
#capsule
🔥extends vs implement
1⃣
🟢واژه extend به معنای گسترش دادن یا توسعه دادن هست
B extends A
یعنی اینکه B داره A رو توسعه میده (گسترش میده)
🟢واژه implement به معنای پیاده سازی یا اجرا کردن هست
B implement A
یعنی B داره A رو پیاده سازی میکنه.
#capsule
💊Capsule
🔥extends vs implement
2⃣
گفتم که extend به معنای توسعه دادن هست .
پس وقتی که کلاس B داره کلاس A رو توسعه میده (extends) , طبیعتا طبق معنای توسعه دادن، باید تمام ویژگی ها و رفتار های کلاس A رو داشته باشه و بتونه اون رفتار ها رو تغییر بده و یا ویژگی ها و رفتار های جدید بهش اضافه کنه.
هر کلاس دو تا مولفه داره
✔️Fields ویژگی
✔️Methods رفتار
این ها میتونن static یا instance باشن
✔️instance Fields or methods
✔️Static Fields or methods
❌در این جا با static ها کاری نداریم (چون در سطح کلاس هستن و نه در سطح اشیا ساخته شده از کلاس)
🔥وقتی یک کلاس از یک کلاس دیگه extends میکنه:
🟢همه instance Field ها و instance method های اون رو به ارث میبره .
❌به غیر از اعضای private
❌توی دارت private نداریم.
🟢میتونه اون ها رو تغییر یا به اصطلاح override کنه.
🟢یا میتونه field ها یا method های جدید رو به اون اضافه کنه.
🔥در اینجا اصطلاح super class و sub class معرفی میشه
B extends A
در نتیجه کلاس A در اینجا super class و کلاس B یک subclass از کلاس A هست
کلاس فرزند تمام رفتار ها و ویژگی های والد رو به ارث میبره.
میتونه اون ها رو به صورت دست نخورده باقی بگذاره یا اون ها رو تغییر بده.
همچنین میتونه رفتار ها و ویژگی های جدید اضافه کنه.
#capsule
🔥extends vs implement
2⃣
گفتم که extend به معنای توسعه دادن هست .
پس وقتی که کلاس B داره کلاس A رو توسعه میده (extends) , طبیعتا طبق معنای توسعه دادن، باید تمام ویژگی ها و رفتار های کلاس A رو داشته باشه و بتونه اون رفتار ها رو تغییر بده و یا ویژگی ها و رفتار های جدید بهش اضافه کنه.
هر کلاس دو تا مولفه داره
✔️Fields ویژگی
✔️Methods رفتار
این ها میتونن static یا instance باشن
✔️instance Fields or methods
✔️Static Fields or methods
❌در این جا با static ها کاری نداریم (چون در سطح کلاس هستن و نه در سطح اشیا ساخته شده از کلاس)
🔥وقتی یک کلاس از یک کلاس دیگه extends میکنه:
🟢همه instance Field ها و instance method های اون رو به ارث میبره .
❌به غیر از اعضای private
❌توی دارت private نداریم.
🟢میتونه اون ها رو تغییر یا به اصطلاح override کنه.
🟢یا میتونه field ها یا method های جدید رو به اون اضافه کنه.
🔥در اینجا اصطلاح super class و sub class معرفی میشه
B extends A
در نتیجه کلاس A در اینجا super class و کلاس B یک subclass از کلاس A هست
کلاس فرزند تمام رفتار ها و ویژگی های والد رو به ارث میبره.
میتونه اون ها رو به صورت دست نخورده باقی بگذاره یا اون ها رو تغییر بده.
همچنین میتونه رفتار ها و ویژگی های جدید اضافه کنه.
#capsule
💊Capsule
🔥extends vs implement
3⃣
خب بریم سراغ implement
گفتیم که این واژه به معنای پیاده سازی هست
یک لحظه از دنیای برنامه نویسی بیاین بیرون
توی دنیای واقعی
من به شما میگم، اقا خانم، فلان چیز رو پیاده سازی کن.
وقتی بهت میگم فلان چیز رو پیاده سازی کن شما منتظر چی هست؟ در جواب چی میگی؟
میگی چی رو؟
درسته؟
منتظر یه دستور هستی
منتظر یک یا چند دستور
دستور العمل
دستور هایی که یک نفر صادر کرده و دیگری میخواد پیاده کنه یا اجرا کنه.
🔥پس وقتی که میگیم B میخاد A رو implement کنه، در واقع A باید یک مجموعه ای از دستور العمل ها باشه.
❌در اینجا دیگه A چیزی پیاده نکرده، چون که A قراره که دستور رو صادر کنه و یکی دیگه اون ها رو پیاده یا اجرا کنه.
❓پس باید بفهمیم که چطور میتونیم یک مجموعه از دستور ها رو بنویسیم که دیگران اون ها رو اجرا کنن.
پست بعدی 😍
#capsule
🔥extends vs implement
3⃣
خب بریم سراغ implement
گفتیم که این واژه به معنای پیاده سازی هست
یک لحظه از دنیای برنامه نویسی بیاین بیرون
توی دنیای واقعی
من به شما میگم، اقا خانم، فلان چیز رو پیاده سازی کن.
وقتی بهت میگم فلان چیز رو پیاده سازی کن شما منتظر چی هست؟ در جواب چی میگی؟
میگی چی رو؟
درسته؟
منتظر یه دستور هستی
منتظر یک یا چند دستور
دستور العمل
دستور هایی که یک نفر صادر کرده و دیگری میخواد پیاده کنه یا اجرا کنه.
🔥پس وقتی که میگیم B میخاد A رو implement کنه، در واقع A باید یک مجموعه ای از دستور العمل ها باشه.
❌در اینجا دیگه A چیزی پیاده نکرده، چون که A قراره که دستور رو صادر کنه و یکی دیگه اون ها رو پیاده یا اجرا کنه.
❓پس باید بفهمیم که چطور میتونیم یک مجموعه از دستور ها رو بنویسیم که دیگران اون ها رو اجرا کنن.
پست بعدی 😍
#capsule
💊Capsule
🔥extends vs implement
4⃣
رسیدیم به اینجا که یک مجموعه از دستور ها رو یه جایی بنویسم و بقیه کلاس ها بتونن اون ها implement کنن.
🔥برای این منظور توی زبان های برنامه نویسی از مفهومی به نام interface ها استفاده میکنن.
✅توی یک interface ما فقط یک سری متد تعریف میکنیم و این متد ها هیچ بدنه و یا body ندارند.
✅در واقع فقط داریم یک دستور رو صادر میکنیم.
✅کلاس های دیگه که interface مورد نظر رو implement میکنن، باید تمام متد هایی که داخل اون interface تعریف شده رو پیاده سازی کنن.
🔥در واقع توی interface ما فقط امضای متد یا Signature اون رو مشخص میکنیم.
#capsule
🔥extends vs implement
4⃣
رسیدیم به اینجا که یک مجموعه از دستور ها رو یه جایی بنویسم و بقیه کلاس ها بتونن اون ها implement کنن.
🔥برای این منظور توی زبان های برنامه نویسی از مفهومی به نام interface ها استفاده میکنن.
✅توی یک interface ما فقط یک سری متد تعریف میکنیم و این متد ها هیچ بدنه و یا body ندارند.
✅در واقع فقط داریم یک دستور رو صادر میکنیم.
✅کلاس های دیگه که interface مورد نظر رو implement میکنن، باید تمام متد هایی که داخل اون interface تعریف شده رو پیاده سازی کنن.
🔥در واقع توی interface ما فقط امضای متد یا Signature اون رو مشخص میکنیم.
interface Contract{
void doSomething() ;
}
Class Concrete implement Contract {
void doSomething () {
// do your work...
}
}
#capsule
💊Capsule
🔥extends vs implement
5⃣
❌توی دارت چیزی به نام interface نداریم.
🔥برای این منظور از abstract کلاس ها استفاده میکنیم.
✅کلاس های abstract هم میتونن متد های معمولی داشته باشن (همراه با بدنه /مثل بقیه کلاس ها) و هم متد های بدون بدنه.
✅هم میتونیم یک abstract کلاس رو implement کنیم و هم میتونیم ازش extends کنیم.
❓ولی تفاوتش چیه؟ 🤔
🔥اگه extends کنیم، این کلاس مثل یک super class برای ما عمل میکنه و تمام ویژگی های اون رو به ارث میبریم و علاوه بر اون باید متد های بدون بدنه اون رو پیاده سازی کنیم.
🔥اگه اون رو implement کنیم، کلا دیگه موضوع به ارث بردن ویژگی های اون میره پی کارش و ما مجبور میشیم که تمام متد های اون رو (چه با بدنه و چه بدون بدنه) پیاده سازی کنیم.
در واقع حتی متد هایی از کلاس پدر که پیاده سازی هم دارن، نادیده گرفته میشن و باید همه متد هاش داخل کلاس مورد نظر پیاده سازی بشن.
❌ولی این مورد استفاده توصیه نمیشه.
✅اگه abstract کلاسمون همه متد هاش بدون بدنه بودن و شبیه به interface بود اون رو implement میکنیم.
✅و اگه هر دو نوع رو در خودش داشت ازش extends میکینم که بتونیم تمام ویژگی هاش رو به ارث ببریم و متد های بدون بدنش رو هم implement یا پیاده سازی کنیم.
#capsule
🔥extends vs implement
5⃣
❌توی دارت چیزی به نام interface نداریم.
🔥برای این منظور از abstract کلاس ها استفاده میکنیم.
abstract class Contract{
void doSomething() ;
}
Class Concrete implement Contract {
void doSomething () {
// do your work...
}
}
✅کلاس های abstract هم میتونن متد های معمولی داشته باشن (همراه با بدنه /مثل بقیه کلاس ها) و هم متد های بدون بدنه.
✅هم میتونیم یک abstract کلاس رو implement کنیم و هم میتونیم ازش extends کنیم.
❓ولی تفاوتش چیه؟ 🤔
🔥اگه extends کنیم، این کلاس مثل یک super class برای ما عمل میکنه و تمام ویژگی های اون رو به ارث میبریم و علاوه بر اون باید متد های بدون بدنه اون رو پیاده سازی کنیم.
🔥اگه اون رو implement کنیم، کلا دیگه موضوع به ارث بردن ویژگی های اون میره پی کارش و ما مجبور میشیم که تمام متد های اون رو (چه با بدنه و چه بدون بدنه) پیاده سازی کنیم.
در واقع حتی متد هایی از کلاس پدر که پیاده سازی هم دارن، نادیده گرفته میشن و باید همه متد هاش داخل کلاس مورد نظر پیاده سازی بشن.
❌ولی این مورد استفاده توصیه نمیشه.
✅اگه abstract کلاسمون همه متد هاش بدون بدنه بودن و شبیه به interface بود اون رو implement میکنیم.
✅و اگه هر دو نوع رو در خودش داشت ازش extends میکینم که بتونیم تمام ویژگی هاش رو به ارث ببریم و متد های بدون بدنش رو هم implement یا پیاده سازی کنیم.
#capsule
💊Capsule
🔥extends vs implement
6⃣
🔥اگه بخوایم یک abstract کلاس قابل ارث بری نباشه و کلاس های دیگه نتونن ازش extends کنن و فقط مجبور باشن که implement اش کنن و در واقع شکل interface به خودش بگیره از تکنیک زیر استفاده می کنیم.
❌البته کلاس هایی که توی یک فایل یا library هستن میتونن این دست انداز رو رد کنن و بازم extends کنن😝
#capsule
🔥extends vs implement
6⃣
🔥اگه بخوایم یک abstract کلاس قابل ارث بری نباشه و کلاس های دیگه نتونن ازش extends کنن و فقط مجبور باشن که implement اش کنن و در واقع شکل interface به خودش بگیره از تکنیک زیر استفاده می کنیم.
abstract class MyInterface{
const MyInterface._() ;
}
❌البته کلاس هایی که توی یک فایل یا library هستن میتونن این دست انداز رو رد کنن و بازم extends کنن😝
#capsule
💊Capsule
نام گذاری
برای نام گذاری متغیر ها , فانکشن ها , کلاس ها و ... توی زبان های برنامه نویسی از 4 الگوی مختلف استفاده میشه:
✔️snake_case
✔️camelCase
✔️PascalCase
✔️kebap-case
🔥هر زبان برنامه نویسی برای نام گذاری قوانین خودش رو داره و باید اون ها رو رعایت کنیم.
🔥توی دارت :
✅برای نام گذاری فایل ها از snake_case استفاده میکنیم.
home_page.dart
✅برای نام گذاری متغیر های و فانکشن ها از camelCase استفاده میکنیم.
var newUser;
User createUser(){}
✅برای نام گذاری کلاس ها از PascalCase استفاده میکنیم.
class HomePage{}
#capsule
نام گذاری
برای نام گذاری متغیر ها , فانکشن ها , کلاس ها و ... توی زبان های برنامه نویسی از 4 الگوی مختلف استفاده میشه:
✔️snake_case
✔️camelCase
✔️PascalCase
✔️kebap-case
🔥هر زبان برنامه نویسی برای نام گذاری قوانین خودش رو داره و باید اون ها رو رعایت کنیم.
🔥توی دارت :
✅برای نام گذاری فایل ها از snake_case استفاده میکنیم.
home_page.dart
✅برای نام گذاری متغیر های و فانکشن ها از camelCase استفاده میکنیم.
var newUser;
User createUser(){}
✅برای نام گذاری کلاس ها از PascalCase استفاده میکنیم.
class HomePage{}
#capsule
🔥زبان جدید گوگل
https://www.instagram.com/tv/CgzAvoRFjWs/?igshid=YmMyMTA2M2Y=
توی پست بالا، جادی در مورد زبان جدید گوگل صحبت میکنه
-کربن- زبان جدید و خیلی جدید گوگله که هنوز ابتدای راهه و دارن روش کار میکنن.
یک زبانی هست که میتونه با c++ مخلوط بشه و بخاطر جدید تر بودنش کار با c++ رو راحتر کنه.
پ.ن: این زبان رو من کار نکردم و فقط حرفهای جادی رو کپی و پیست کردم.
https://www.instagram.com/tv/CgzAvoRFjWs/?igshid=YmMyMTA2M2Y=
توی پست بالا، جادی در مورد زبان جدید گوگل صحبت میکنه
-کربن- زبان جدید و خیلی جدید گوگله که هنوز ابتدای راهه و دارن روش کار میکنن.
یک زبانی هست که میتونه با c++ مخلوط بشه و بخاطر جدید تر بودنش کار با c++ رو راحتر کنه.
پ.ن: این زبان رو من کار نکردم و فقط حرفهای جادی رو کپی و پیست کردم.
🔥Challenge
ابسترکشن (abstraction) رو توضیح بدید.
❌کلاس abstract و interface و از این جور داستان ها مد نظر نیست.
✅مفهومش توی دنیای واقعی چیه (دنیای واقعی، خارج از برنامه نویسی)
میتونید با مثال هایی مفهومش رو توی دنیای واقعی بیان کنید و بعد بگید که برنامه نویس ها چطوری از این مفهوم الگو گرفتن .
و بعد از تحلیلتون به این سوال پاسخ بدید
❓آیا abstraction فقط فقط مخصوص OOP یا برنامه نویسی شی گرا هست؟ یا بقیه پارادایم های برنامه نویسی هم دارن از این مفهوم استفاده میکنن؟ چرا و چگونه؟
#challenge
#advanced
ابسترکشن (abstraction) رو توضیح بدید.
❌کلاس abstract و interface و از این جور داستان ها مد نظر نیست.
✅مفهومش توی دنیای واقعی چیه (دنیای واقعی، خارج از برنامه نویسی)
میتونید با مثال هایی مفهومش رو توی دنیای واقعی بیان کنید و بعد بگید که برنامه نویس ها چطوری از این مفهوم الگو گرفتن .
و بعد از تحلیلتون به این سوال پاسخ بدید
❓آیا abstraction فقط فقط مخصوص OOP یا برنامه نویسی شی گرا هست؟ یا بقیه پارادایم های برنامه نویسی هم دارن از این مفهوم استفاده میکنن؟ چرا و چگونه؟
#challenge
#advanced
میگن یوتیوب مثل دانشگاس
ولی یه جمله دیگه هم هست که میگه دانشگاه به درد نمیخوره و چیزی ازش در نمیاد
خلاصه حواستون باشه 😅😅
ولی یه جمله دیگه هم هست که میگه دانشگاه به درد نمیخوره و چیزی ازش در نمیاد
خلاصه حواستون باشه 😅😅
🔥Challenge
1⃣یه کلاس یوزر داریم که یه فیلد ایمیل داره و یه instance field داخل کلاس از نوع bool داریم که نشون میده ایمیل ولید هست یا نه...
❓چه اسمی برای این فیلد انتخاب میکنی؟
✅isValid
✅emailIsValid
✅isEmailValid
✅isValidEmail
✅hasValidEmail
🤔other...
2⃣یه فانکشن تک و تنها (خارج از هر کلاسی داریم) که قراره یه استرینگ به عنوان ورودی بگیره و یه bool برگردونه که مشخص میکنه این استرینگ یک ادرس ایمیل معتبر هست یا نه...
❓چه اسمی برای این فانکشن انتخاب میکنی؟
✅isValid
✅validate
✅validateEmail
✅emailIsValid
✅isEmailValid
✅isValidEmail
✅hasValidEmail
🤔other...
🔥هر گزینه ای انتخاب کردی با ذکر دلیل..
🔥میتونی بین گزینه ها مقایسه انجام بدی و بگی این چرا بده و اون چرا بهتره و... (این مدل پاسخ خیلی خوبه 😍)
🔥میتونی چند گزینه انتخاب کنی یا گزینه دیگه ای پیشنهاد بدی (با ذکر دلیل و تحلیل)
#challenge
1⃣یه کلاس یوزر داریم که یه فیلد ایمیل داره و یه instance field داخل کلاس از نوع bool داریم که نشون میده ایمیل ولید هست یا نه...
❓چه اسمی برای این فیلد انتخاب میکنی؟
✅isValid
✅emailIsValid
✅isEmailValid
✅isValidEmail
✅hasValidEmail
🤔other...
2⃣یه فانکشن تک و تنها (خارج از هر کلاسی داریم) که قراره یه استرینگ به عنوان ورودی بگیره و یه bool برگردونه که مشخص میکنه این استرینگ یک ادرس ایمیل معتبر هست یا نه...
❓چه اسمی برای این فانکشن انتخاب میکنی؟
✅isValid
✅validate
✅validateEmail
✅emailIsValid
✅isEmailValid
✅isValidEmail
✅hasValidEmail
🤔other...
🔥هر گزینه ای انتخاب کردی با ذکر دلیل..
🔥میتونی بین گزینه ها مقایسه انجام بدی و بگی این چرا بده و اون چرا بهتره و... (این مدل پاسخ خیلی خوبه 😍)
🔥میتونی چند گزینه انتخاب کنی یا گزینه دیگه ای پیشنهاد بدی (با ذکر دلیل و تحلیل)
#challenge
کدوم یک از دیزاین پترن های زیر نقش اساسی تر از بقیه رو در فلاتر ایفا میکنه؟
Anonymous Quiz
18%
Template method
40%
Observer
18%
Composite
6%
Visitor
18%
Decorator
Pure Coder
کدوم یک از دیزاین پترن های زیر نقش اساسی تر از بقیه رو در فلاتر ایفا میکنه؟
هر ۵ مورد توی فلاتر استفاده شدن(+ بقیه دیزاین پترن ها)
یکی از بقیه اساسی تره
یکی از بقیه اساسی تره
🤔بحث
توی زبان JAVA یه مفهومی داریم به اسم inner class
به این صورت که میتونیم داخل یک کلاس , یک کلاس دیگه تعریف کنیم.
به نظر شما چنین امکانی توی زبان Dart لازم هست ؟
#challenge
توی زبان JAVA یه مفهومی داریم به اسم inner class
به این صورت که میتونیم داخل یک کلاس , یک کلاس دیگه تعریف کنیم.
public class Order{
private Totals totals;
private class Totals{
private double total;
private double discount;
}
}
توی زبان Dart چنین امکانی وجود نداره!!به نظر شما چنین امکانی توی زبان Dart لازم هست ؟
#challenge
🔥Flutter 3.3
✅یکی از مواردی که توی این نسخه روش مانور دادن موتور گرافیکی جدید هست
Impeller
🔥به گفته خودشون پرفرمانس رو خیلی بهتر میکنه و موجب روون تر شدن انیمیشن ها میشه و...
همچنین میتونه از قابلیت های جدید پردازنده های گرافیکی (سخت افزار) به خوبی استفاده کنه که یک مزیته.
❌این تغییرات البته توی انجین اتفاق افتاده (c++) و کدی که من و شما میزنیم تحت تاثیر قرار نمیگیره.
🔥برای استفاده از این قابلیت و استفاده از impeller میتونید از کامند زیر برای ران کردن اپ استفاده کنید :
flutter run enable-impeller
یا توی اندروید و فایل مانیفست این رو ست کنید
<meta-data android:name="io.flutter.embedding.android.EnableImpeller"
android:value="true" />
🟢هنوز در دست توسعه هست البته.
برای اطلاعات بیشتر و تنظیمات ios هم لینک زیر رو ببینید.
🤔تست کنید ببیند ایا واقعا ادعاشون صادقه 😁
https://github.com/flutter/flutter/wiki/Impeller
✅یکی از مواردی که توی این نسخه روش مانور دادن موتور گرافیکی جدید هست
Impeller
🔥به گفته خودشون پرفرمانس رو خیلی بهتر میکنه و موجب روون تر شدن انیمیشن ها میشه و...
همچنین میتونه از قابلیت های جدید پردازنده های گرافیکی (سخت افزار) به خوبی استفاده کنه که یک مزیته.
❌این تغییرات البته توی انجین اتفاق افتاده (c++) و کدی که من و شما میزنیم تحت تاثیر قرار نمیگیره.
🔥برای استفاده از این قابلیت و استفاده از impeller میتونید از کامند زیر برای ران کردن اپ استفاده کنید :
flutter run enable-impeller
یا توی اندروید و فایل مانیفست این رو ست کنید
<meta-data android:name="io.flutter.embedding.android.EnableImpeller"
android:value="true" />
🟢هنوز در دست توسعه هست البته.
برای اطلاعات بیشتر و تنظیمات ios هم لینک زیر رو ببینید.
🤔تست کنید ببیند ایا واقعا ادعاشون صادقه 😁
https://github.com/flutter/flutter/wiki/Impeller
GitHub
Impeller
Flutter makes it easy and fast to build beautiful apps for mobile and beyond - Impeller · flutter/flutter Wiki
🔥Challenge
🟢اگه یک متد رو داخل یه کلاس با _ پرایوت کنیم، بقیه کلاس ها یا فانکشن هایی که داخل اون فایل هستن هم میتونن از اون متد استفاده کنن.
❓چه کار کنیم که یک متد فقط و فقط و فقط داخل همون کلاسی که تعریف شده قابل استفاده باشه و نه کلاس ها و فانکشن های دیگه اون فایل یا library ؟
#challenge
#dart_challenge
🟢اگه یک متد رو داخل یه کلاس با _ پرایوت کنیم، بقیه کلاس ها یا فانکشن هایی که داخل اون فایل هستن هم میتونن از اون متد استفاده کنن.
❓چه کار کنیم که یک متد فقط و فقط و فقط داخل همون کلاسی که تعریف شده قابل استفاده باشه و نه کلاس ها و فانکشن های دیگه اون فایل یا library ؟
#challenge
#dart_challenge
🔥قبل از فلاتر اندروید نیتیو کار میکردم
✅اونجا هر View (تقریبا شبیه ویجت فلاتر) که میساختیم یه ایدی بهش میدادیم...
وقتی فلاتر رو شروع کردم (سال ۹۷)
❌اول اول اول فکر میکردم که key ها توی فلاتر شبیه به ایدی توی view های اندروید عمل میکنن و باید به همه ویجت ها key بدیم که بعدا با اون key بتونیم پیداشون کنیم و هر کاری خواستیم باهاشون انجام بدیم.
✅توی اندروپد از ایدی برای جستجو کردن ویوی مورد نظر بین ویوها استفاده می کردیم.
🔥ولی key ها توی فلاتر کاربرد خیلی خاص و خیلی خیلی محدودی دارن.
🔥🔥خیلی خیلی محدود ولی حیاتی و مهم.
😍توی پست های بعدی با key ها و انواعشون اشنا میشیم و کاربرد هاشون رو بررسی میکنیم.
پ.ن: توی این پست ها فقط کاربرد ها رو میگم و در مورد اتفاقاتی که توی بک گراند میوفته و بلایی که سر key ها و ویجت ها و... میاد صحبت نمیکنم (چون که نیاز به بحث طولانی داره)
✅اونجا هر View (تقریبا شبیه ویجت فلاتر) که میساختیم یه ایدی بهش میدادیم...
وقتی فلاتر رو شروع کردم (سال ۹۷)
❌اول اول اول فکر میکردم که key ها توی فلاتر شبیه به ایدی توی view های اندروید عمل میکنن و باید به همه ویجت ها key بدیم که بعدا با اون key بتونیم پیداشون کنیم و هر کاری خواستیم باهاشون انجام بدیم.
✅توی اندروپد از ایدی برای جستجو کردن ویوی مورد نظر بین ویوها استفاده می کردیم.
🔥ولی key ها توی فلاتر کاربرد خیلی خاص و خیلی خیلی محدودی دارن.
🔥🔥خیلی خیلی محدود ولی حیاتی و مهم.
😍توی پست های بعدی با key ها و انواعشون اشنا میشیم و کاربرد هاشون رو بررسی میکنیم.
پ.ن: توی این پست ها فقط کاربرد ها رو میگم و در مورد اتفاقاتی که توی بک گراند میوفته و بلایی که سر key ها و ویجت ها و... میاد صحبت نمیکنم (چون که نیاز به بحث طولانی داره)