میگن یوتیوب مثل دانشگاس
ولی یه جمله دیگه هم هست که میگه دانشگاه به درد نمیخوره و چیزی ازش در نمیاد
خلاصه حواستون باشه 😅😅
ولی یه جمله دیگه هم هست که میگه دانشگاه به درد نمیخوره و چیزی ازش در نمیاد
خلاصه حواستون باشه 😅😅
🔥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 ها و ویجت ها و... میاد صحبت نمیکنم (چون که نیاز به بحث طولانی داره)
💊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
💊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
💊Capsule
🔥GlobalKey
3️⃣
🟢در مورد کاربرد اول GlobalKey گفتیم که میتونیم با استفاده از اون به context و state یک ویجت برسیم.
🔥با استفاده از state میتونیم به متد های داخل state ویجت مورد نظر دسترسی داشته باشیم و کالشون کنیم.
مثلا برای Navigator , Scaffold و ... میتونه مفید باشه.
❌سعی کنید برای ویجت هایی که خودتون مینویسید از این مورد استفاده نکنید مگر اینکه واقعا لازم بود.
✅خیلی مواقع راه حل استفاده از استیت منجمنت هست.
🔥با استفاده از context هم میتونیم کار هایی از قبیل :
✔️دسترسی به renderObject ویجت مورد نظر
✔️نوتیف فرستادن به وسیله context
✔️و...
رو انجام داد.
#capsule
🔥GlobalKey
3️⃣
🟢در مورد کاربرد اول GlobalKey گفتیم که میتونیم با استفاده از اون به context و state یک ویجت برسیم.
🔥با استفاده از state میتونیم به متد های داخل state ویجت مورد نظر دسترسی داشته باشیم و کالشون کنیم.
مثلا برای Navigator , Scaffold و ... میتونه مفید باشه.
❌سعی کنید برای ویجت هایی که خودتون مینویسید از این مورد استفاده نکنید مگر اینکه واقعا لازم بود.
✅خیلی مواقع راه حل استفاده از استیت منجمنت هست.
🔥با استفاده از context هم میتونیم کار هایی از قبیل :
✔️دسترسی به renderObject ویجت مورد نظر
✔️نوتیف فرستادن به وسیله context
✔️و...
رو انجام داد.
#capsule
Pure Coder
Screenshot from 2022-09-16 12-14-56.png
این فایل رو میتونید توی قسمت snippets های vscode کپی کنید و همون طور که توی عکس نشون دادم از short cut هاش برای نوشتن unit test ها استفاده کنید.
توی پروژه هاتون تست مینویسید؟
Anonymous Poll
50%
نه بیخیال بابا
11%
اره و از TDD پیروی میکنم
8%
اره ولی از TDD پیروی نمیکنم
32%
نمیدونم چیه (دیدن نتایج)
🔥برای اینکه توی گیت یک یا چندcommit قدیمی رو ویرایش کنید و message اون ها رو تغییر بدید میتونید از مقاله زیر استفاده کنید
https://linuxize.com/post/change-git-commit-message/
😍این کار برای تر و تمیز کردن commit های قدیمی خیلی به درد میخوره.
مثلا من میخواستم یک سری commit های قدیمی که داشتم رو طبق قوانینی که توی پست زیر قبلا توی کانال توضیح دادم ویرایش کنم.
https://t.me/FlutterChallenges/354
https://linuxize.com/post/change-git-commit-message/
😍این کار برای تر و تمیز کردن commit های قدیمی خیلی به درد میخوره.
مثلا من میخواستم یک سری commit های قدیمی که داشتم رو طبق قوانینی که توی پست زیر قبلا توی کانال توضیح دادم ویرایش کنم.
https://t.me/FlutterChallenges/354
Linuxize
How to Change a Git Commit Message
This guide explains how to change the message of the most recent or older Git commits.
🔥clean_test
🟢یک library نوشتم که کمک میکنه که unit test ها رو توی Dart تمیز تر بنویسیم.
❌فعلا براش README قرار ندادم و فقط میتونید کد های library رو ببینید
🔥در اینده یک سری مثال ها رو با استفاده از این library قرار میدم که با نحوه کار باهاش اشنا بشید.
❌توی pub.dev نذاشتم و میتونید با لینک گیتهاب پروژه اون رو به قسمت dev dependency های پروژتون توی pubspec اضافه کنید و براش نوشتن تست های clean ازش استفاده کنید. 😍
https://github.com/mohammadtaherri/clean_test
🟢یک library نوشتم که کمک میکنه که unit test ها رو توی Dart تمیز تر بنویسیم.
❌فعلا براش README قرار ندادم و فقط میتونید کد های library رو ببینید
🔥در اینده یک سری مثال ها رو با استفاده از این library قرار میدم که با نحوه کار باهاش اشنا بشید.
❌توی pub.dev نذاشتم و میتونید با لینک گیتهاب پروژه اون رو به قسمت dev dependency های پروژتون توی pubspec اضافه کنید و براش نوشتن تست های clean ازش استفاده کنید. 😍
https://github.com/mohammadtaherri/clean_test
GitHub
GitHub - mohammadtaherri/clean_test
Contribute to mohammadtaherri/clean_test development by creating an account on GitHub.
🔥TDD data structures and algorithms
🟢همون طور که گفتم پکیج clean_test رو برای دارت توسعه دادم که این پکیج کوچک کمک میکنه به تمیز تر نوشتن unit test ها توی دارت.
😍و همون طور که قول دادم قرار شد مثال هایی رو برای کار با این پکیج عنوان کنم.
🔥یک ریپوزیتوری توی گیتهاب ایجاد کردم و توی این ریپو قراره که data structure ها و الگوریتم های معروف رو با روش TDD بزنیم.
و برای نوشتن تست ها هم از پکیج clean_test استفاده میکنم.
🔥اولین دیتا استراکچری که قرار دادم Stack هست.
🙏لطفا کدها و تست ها رو بررسی کنید و به پروژه هم ستاره بدید .
https://github.com/mohammadtaherri/tdd_data_structures_and_algorithms
🟢همون طور که گفتم پکیج clean_test رو برای دارت توسعه دادم که این پکیج کوچک کمک میکنه به تمیز تر نوشتن unit test ها توی دارت.
😍و همون طور که قول دادم قرار شد مثال هایی رو برای کار با این پکیج عنوان کنم.
🔥یک ریپوزیتوری توی گیتهاب ایجاد کردم و توی این ریپو قراره که data structure ها و الگوریتم های معروف رو با روش TDD بزنیم.
و برای نوشتن تست ها هم از پکیج clean_test استفاده میکنم.
🔥اولین دیتا استراکچری که قرار دادم Stack هست.
🙏لطفا کدها و تست ها رو بررسی کنید و به پروژه هم ستاره بدید .
https://github.com/mohammadtaherri/tdd_data_structures_and_algorithms
GitHub
GitHub - mohammadtaherri/tdd_data_structures_and_algorithms: TDD data structures and algorithms
TDD data structures and algorithms. Contribute to mohammadtaherri/tdd_data_structures_and_algorithms development by creating an account on GitHub.
Pure Coder
🔥TDD data structures and algorithms 🟢همون طور که گفتم پکیج clean_test رو برای دارت توسعه دادم که این پکیج کوچک کمک میکنه به تمیز تر نوشتن unit test ها توی دارت. 😍و همون طور که قول دادم قرار شد مثال هایی رو برای کار با این پکیج عنوان کنم. 🔥یک ریپوزیتوری…
پکیج clean_test رو توی pub هم گذاشتم و برای استفاده از پکیج میتونید اون رو از pub بگیرید.
همچنین میتونید توی این پروژه همکاری کنید و دیتا استراکچر ها و الگوریتم های مدنظرتون رو به پروژه اضافه کنید.
همچنین میتونید توی این پروژه همکاری کنید و دیتا استراکچر ها و الگوریتم های مدنظرتون رو به پروژه اضافه کنید.
🔥Challenge
😍یه چالش جذاب
🔥طراحی انیمیشن Loading اپ Outline
🟢دو تا نمونه قرار داد شده رو با دقت ببینید
یکی از اون ها مربوط به اپ outline هست و یکی رو هم خودم طراحی کردم
یک progress indicator شبیه به این طراحی کنید و لینک کد گیتهابتون رو توی کامنت ها بفرستید...
😍بعضی از دوستان قبلا این چالش انجام دادن که لینک پروژشون رو توی کامنت قرار میدم.
#challenge
😍یه چالش جذاب
🔥طراحی انیمیشن Loading اپ Outline
🟢دو تا نمونه قرار داد شده رو با دقت ببینید
یکی از اون ها مربوط به اپ outline هست و یکی رو هم خودم طراحی کردم
یک progress indicator شبیه به این طراحی کنید و لینک کد گیتهابتون رو توی کامنت ها بفرستید...
😍بعضی از دوستان قبلا این چالش انجام دادن که لینک پروژشون رو توی کامنت قرار میدم.
#challenge