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

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

⭕️پشتیبانی:
@PureCoder_support
@MohammadTaherri
Download Telegram
💊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
💊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 ها استفاده کنید.
🔥برای اینکه توی گیت یک یا چندcommit قدیمی رو ویرایش کنید و message اون ها رو تغییر بدید میتونید از مقاله زیر استفاده کنید

https://linuxize.com/post/change-git-commit-message/

😍این کار برای تر و تمیز کردن commit های قدیمی خیلی به درد میخوره.

مثلا من میخواستم یک سری commit های قدیمی که داشتم رو طبق قوانینی که توی پست زیر قبلا توی کانال توضیح دادم ویرایش کنم.

https://t.me/FlutterChallenges/354
🔥clean_test

🟢یک library نوشتم که کمک میکنه که unit test ها رو توی Dart تمیز تر بنویسیم.

فعلا براش README قرار ندادم و فقط میتونید کد های library رو ببینید

🔥در اینده یک سری مثال ها رو با استفاده از این library قرار میدم که با نحوه کار باهاش اشنا بشید.

توی pub.dev نذاشتم و میتونید با لینک گیتهاب پروژه اون رو به قسمت dev dependency های پروژتون توی pubspec اضافه کنید و براش نوشتن تست های clean ازش استفاده کنید. 😍

https://github.com/mohammadtaherri/clean_test
🔥TDD data structures and algorithms

🟢همون طور که گفتم پکیج clean_test رو برای دارت توسعه دادم که این پکیج کوچک کمک میکنه به تمیز تر نوشتن unit test ها توی دارت.

😍و همون طور که قول دادم قرار شد مثال هایی رو برای کار با این پکیج عنوان کنم.

🔥یک ریپوزیتوری توی گیتهاب ایجاد کردم و توی این ریپو قراره که data structure ها و الگوریتم های معروف رو با روش TDD بزنیم.

و برای نوشتن تست ها هم از پکیج clean_test استفاده میکنم.

🔥اولین دیتا استراکچری که قرار دادم Stack هست.

🙏لطفا کدها و تست ها رو بررسی کنید و به پروژه هم ستاره بدید .

https://github.com/mohammadtaherri/tdd_data_structures_and_algorithms
Pure Coder
🔥TDD data structures and algorithms 🟢همون طور که گفتم پکیج clean_test رو برای دارت توسعه دادم که این پکیج کوچک کمک میکنه به تمیز تر نوشتن unit test ها توی دارت. 😍و همون طور که قول دادم قرار شد مثال هایی رو برای کار با این پکیج عنوان کنم. 🔥یک ریپوزیتوری…
پکیج clean_test رو توی pub هم گذاشتم و برای استفاده از پکیج میتونید اون رو از pub بگیرید.

همچنین میتونید توی این پروژه همکاری کنید و دیتا استراکچر ها و الگوریتم های مدنظرتون رو به پروژه اضافه کنید.
🔥Challenge

😍یه چالش جذاب

🔥طراحی انیمیشن Loading اپ Outline

🟢دو تا نمونه قرار داد شده رو با دقت ببینید
یکی از اون ها مربوط به اپ outline هست و یکی رو هم خودم طراحی کردم

یک progress indicator شبیه به این طراحی کنید و لینک کد گیتهابتون رو توی کامنت ها بفرستید...

😍بعضی از دوستان قبلا این چالش انجام دادن که لینک پروژشون رو توی کامنت قرار میدم.

#challenge
امروز سالروز بزرگداشت کوروش بزرگ هست.❤️

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

به امید ایران قوی , با شکوه و بزرگ ❤️
به شکوه و پهناوری ایران هخامنشی و ساسانی❤️
🔥Challenge

چالش :

تفاوت exception و error توی دارت چی هست؟

throw Exception()
throw Error()

#challenge
🔥dartunit

یه پکیج جدید برای نوشتن unit test توی دارت توسعه دادم.(dartunit)

🟢دوستانی که با junit توی جاوا آشنایی دارند این پکیج هم مثل junit از annotation ها استفاده میکنه.

🟢به این ترتیب شما میتونید به جای نوشتن group که قبلا توی دارت داشتیم یه کلاس بسازید و با انوتیشن @TestCase اون رو به پکیج معرفی کنید.

🟢امکان نوشتن group های تو در تو که قبلا وجود داشت این جا به وسیله ارث بری کلاس های تست از هم فراهم شده.

🟢همچنین به جای نوشتن test که قبلا داشتیم میتونید متد های مختلف داخل کلاستون بنویسید و با انوتیشن @Test اون رو به پکیج معرفی کنید.

🟢همچنین انوتیشین های
@SetUp @TearDown
@SetUpAll @TearDownAll
هم برای نوشتن فانکشن های مربوطه قابل استفاده هستند.

🔥🔥توی این پکیج دیگه نیاز نیست مثل قبل برای گروه ها و تست هاتون description مشخص کنید 😡😡 و خود پکیج از روی اسم کلاس ها و متد ها description ها رو میسازه.

البته امکان وارد کردن description به صورت اختیاری هم هست.

🔥🔥تمام امکاناتی که قبلا برای تست توی پکیج test وجود داشت این ها هم وجود داره. (مثل skip کردن یه تست یا گروه خاص یا ...)

❤️لطفا این پکیج رو توی Pub لایک کنید و نظراتتون رو بگید.

https://pub.dev/packages/dartunit
https://github.com/mohammadtaherri/dartunit
Pure Coder
🔥dartunit یه پکیج جدید برای نوشتن unit test توی دارت توسعه دادم.(dartunit) 🟢دوستانی که با junit توی جاوا آشنایی دارند این پکیج هم مثل junit از annotation ها استفاده میکنه. 🟢به این ترتیب شما میتونید به جای نوشتن group که قبلا توی دارت داشتیم یه کلاس بسازید…
چون که این پکیج از dart:mirror برای شناسایی انوتیشن ها و ران کردن تست ها استفاده میکنه در حال حاضر امکان اجرای تست ها توی پروژه های فلاتر به وسیله IDE وجود نداره.

چون که فلاتر از dart:mirror پشتیبانی نمیکنه.

ولی توی پروژه های فلاتر میتونید از طریق ترمینال و با کامند زیر تست ها رو ران کنید.

dart test test/your_file.dart --reporter=expanded

و به صورتی که توی تصویر مشخص شده نتایج رو مشاهده کنید.
This media is not supported in your browser
VIEW IN TELEGRAM
کد مربوط به چالش بالا رو توی گیتهاب قرار دادم...

😱توی این مینی پروژه میتونید با ساختن RenderObject ها از پایه و نحوه استفاده از ProxyAnimation و ... اشنا بشید.

❤️لطفا حمایت کنید و ستاره بزنید و در صورت نیاز پروژه رو فورک کنید.

اگه سوالی داشتید توی کامنت های این پست بپرسید.

https://github.com/mohammadtaherri/multi_slice_progress_indicator
🔥ریپوزیتوری زیر یه خلاصه مختصر و مفید از دستورات مقدماتی و ضروری گیت هست که هر برنامه نویسی باید بلد باشه

منبع : جادی❤️

https://github.com/jadijadi/gittutorial/blob/master/Jadi's-git-tutorial-contents.md
اولین زبان برنامه نویسی شی گرا ؟
Anonymous Quiz
30%
Fortran
20%
Simula 67
37%
C++
13%
JAVA
Pure Coder
اولین زبان برنامه نویسی شی گرا ؟
🔥اطلاعات عمومی

توی این لیست Fortran از همه مسن تره
این زبان به دهه ۵۰ میلادی برمیکرده.

به غیر از Fortran بقیه زبان ها، شی گرا هستن.

پارادایم شی گرایی سال ۱۹۶۶ ابداع شد و زبان Simula 67 به عنوان اولین زبان شی گرا طراحی شد.

زبان JAVA جوان ترین زبان بین زبان های بالا هست و طبیعتا اشتباه ترین گزینه برای انتخاب.

جاوا رو با حروف بزرگ مینویسن JAVA
چون که این کلمه مخفف هست.

مخفف نام های ۳ طراح اصلی این زبان که شده JAVA.

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

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

البته اسم زبان جاوا در ابتدا یه چیز دیگه بوده و بعدا تغییر کرده
چند نوع ویجت داخل فلاتر وجود داره؟
Anonymous Poll
45%
2
16%
3
10%
4
11%
5
3%
6
15%
7