🟢<type>(<scope>): <subject>
✔️type : required
✔️scope : optional
✔️subject: required
✅scope
🔥این پارامتر اختیاری هست
🔥کاملا قراردادی هست و بستگی داره به پروژه ای که انجام میدین و توی پروژه باید مشخص کنید که این پارامتر چه مواردی رو میتونه در بر بگیره .
❌پس دنبال موارد از پیش تعیین شده نباشید
🔰برای نمونه توی یه پروژه ای که لایه های مختلف مثل presentation, data, logic داره .
این ها میتونن به عنوان scope در نظر گرفته بشن
🔰یا پروژه ای که سرویس های مختلف داره...
🔰ریپوزیتوری bloc روی گیت هاب که خودش از پروژه های مختلف مثل bloc, fluttet_bloc, ... تشکیل شده، هر پروژه رو به عنوان یه scope در نظر گرفته.
✅پس کاملا قراردادیه.
✅مثل مورد قبلی یعنی type, ابتدای پروژه باید یه لیستی رو مشخص کنید و قرارداد کنید و از اون پیروی کنید ( البته در طول پروژه میتونه بروزرسانی بشه)
#advanced
#capsule
✔️type : required
✔️scope : optional
✔️subject: required
✅scope
🔥این پارامتر اختیاری هست
🔥کاملا قراردادی هست و بستگی داره به پروژه ای که انجام میدین و توی پروژه باید مشخص کنید که این پارامتر چه مواردی رو میتونه در بر بگیره .
❌پس دنبال موارد از پیش تعیین شده نباشید
🔰برای نمونه توی یه پروژه ای که لایه های مختلف مثل presentation, data, logic داره .
این ها میتونن به عنوان scope در نظر گرفته بشن
🔰یا پروژه ای که سرویس های مختلف داره...
🔰ریپوزیتوری bloc روی گیت هاب که خودش از پروژه های مختلف مثل bloc, fluttet_bloc, ... تشکیل شده، هر پروژه رو به عنوان یه scope در نظر گرفته.
✅پس کاملا قراردادیه.
✅مثل مورد قبلی یعنی type, ابتدای پروژه باید یه لیستی رو مشخص کنید و قرارداد کنید و از اون پیروی کنید ( البته در طول پروژه میتونه بروزرسانی بشه)
#advanced
#capsule
🔥4👍3
🟢<type>(<scope>): <subject>
✔️type : required
✔️scope : optional
✔️subject: required
✅subject
🔥برای این مورد از یک جمله کوتاه برای شرح دادن commit مورد نظر استفاده کنید.
جمله باید :
✔️زمان حال ساده باشه.
✔️امری باشه.
✔️با حروف کوچک شروع بشه.
✔️تهش نقطه نباشه
✅update the folan thing
❌Update the folan thing
❌update the folan thing.
❌updated the folan thing
❌the folan thing is updated
❌the folan thing was updated
❌the folan thing has been updated
#capsule
#advanced
✔️type : required
✔️scope : optional
✔️subject: required
✅subject
🔥برای این مورد از یک جمله کوتاه برای شرح دادن commit مورد نظر استفاده کنید.
جمله باید :
✔️زمان حال ساده باشه.
✔️امری باشه.
✔️با حروف کوچک شروع بشه.
✔️تهش نقطه نباشه
✅update the folan thing
❌Update the folan thing
❌update the folan thing.
❌updated the folan thing
❌the folan thing is updated
❌the folan thing was updated
❌the folan thing has been updated
#capsule
#advanced
👍9🔥5
🔥Challenge
ابسترکشن (abstraction) رو توضیح بدید.
❌کلاس abstract و interface و از این جور داستان ها مد نظر نیست.
✅مفهومش توی دنیای واقعی چیه (دنیای واقعی، خارج از برنامه نویسی)
میتونید با مثال هایی مفهومش رو توی دنیای واقعی بیان کنید و بعد بگید که برنامه نویس ها چطوری از این مفهوم الگو گرفتن .
و بعد از تحلیلتون به این سوال پاسخ بدید
❓آیا abstraction فقط فقط مخصوص OOP یا برنامه نویسی شی گرا هست؟ یا بقیه پارادایم های برنامه نویسی هم دارن از این مفهوم استفاده میکنن؟ چرا و چگونه؟
#challenge
#advanced
ابسترکشن (abstraction) رو توضیح بدید.
❌کلاس abstract و interface و از این جور داستان ها مد نظر نیست.
✅مفهومش توی دنیای واقعی چیه (دنیای واقعی، خارج از برنامه نویسی)
میتونید با مثال هایی مفهومش رو توی دنیای واقعی بیان کنید و بعد بگید که برنامه نویس ها چطوری از این مفهوم الگو گرفتن .
و بعد از تحلیلتون به این سوال پاسخ بدید
❓آیا abstraction فقط فقط مخصوص OOP یا برنامه نویسی شی گرا هست؟ یا بقیه پارادایم های برنامه نویسی هم دارن از این مفهوم استفاده میکنن؟ چرا و چگونه؟
#challenge
#advanced
🤔1
💊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