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

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

⭕️پشتیبانی:
@PureCoder_support
@MohammadTaherri
Download Telegram
🔥Challenge

چالش :

اگر بخوایم که یه قطعه کد بلافاصله بعد از کدهای دیگه ولی بدون تاخیر زمانی اجرا بشه چه راه حلی به ذهنتون میرسه ؟ 🤔

#challenge
#dart_challenge
#intermediate
🔥Challenge

▶️سناریو :

همون طور که میدونید توی اپلیکیشن هامون برای ردیابی کاربر یه توکن از سرور می گیریم و اون رو توی حافظه ذخیره میکینم.

🔴در واقع بعد از اینکه کاربر لاگین یا رجیستر کرد یا...، سرور به ما یه توکن میده.

🔴ما باید این توکن رو ذخیره کنیم و توی درخواست های بعدی که به سرور میزنیم این توکن رو توی هدر درخواست ارسال کنیم.

چالش :

فرض کنید یه وب سرویس برای لاگین داریم و بعد از یه لاگین موفقیت امیز، سرور یه توکن توی ریسپانس این درخواست برای ما فرستاده.

🟢حالا این توکن رو باید ذخیره کنیم.

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

🟢توضیح بدید که عملیات ذخیره سازی توکن کدوم بخش های معماری شما رو درگیر میکنه و هر بخش چه کاری رو انجام میده.


#challenge
#architecture_challenge
از نویگیتور ۱ و ۲ به صورت همزمان میشه توی اپ استفاده کرد؟
یعنی هم از Navigator.pages استفاده کنیم و هم از api های کلاسیک نویگیتور مثل push و...
Anonymous Poll
77%
اره
23%
نه
اندروید نیتیو ( جاوا / کاتلین) کار کردین؟
Anonymous Poll
47%
اره
53%
نه
🔥Challenge

چالش :

اگه بخوایم معادل سازی کنیم معادل Activity که توی اندروید نیتیو داریم، توی فلاتر چیه؟ 🤔

#challenge
#flutter_challenge
Forwarded from Persian Flutter (Hadi Azarnasab)
توضیحات بیشتر در مورد آپدیت فلاتر۳ و دارت ۲.۱۷ در پست ویرگول:
https://virgool.io/flutter-community/flutter-3-lw4e9j8t0vv8

#فلاتر۳
@persian_flutter
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Challenge

چالش :

بنظرتون بهترین راه برای پیاده سازی قسمت کامنت ها شبیه اپ یوتیوب چیه؟ 🤔

از پایین بیاد بالا .
تا یه جای مشخصی هم بالا بیاد
فقط با زدن ضربدر بسته بشه و بره پایین.

حرکت دست روش تاثیری نداشته باشه.

#challenge
#flutter_challenge
🔥Challenge

چالش :

میخوام در مورد StatefulWidget صحبت کنم.

🟢همون طور که میدونیم ویجت ها توی فلاتر immutable هستن و StatefulWidget یه State داره میتونه mutable باشه و به این ترتیب با استفاده از اون میشه درخت ویجت رو بر اساس فیلد هایی که توی State تغییر میکنن اپدیت کرد.

🟢توی StatelessWidget یه متد build داریم که وظیفش ساختن اون قسمت از درخت هست.

🟢توی StatefulWidget ولی این متد build رو نداریم و به جاش این متد انتقال داده شده به کلاس State.

🤔توی داک فلاتر یه بحثی رو مطرح کرده و گفته اولش به این فکر میکردیم که توی StatefulWidget هم متد build رو بذاریم توی خود کلاس ویجت و نه کلاس State ولی...

حالا فرض کنید که متد build به جای کلاس State توی خود کلاس StatefulWidget بود (شبیه StatelessWidget) و البته کلاس State رو هم داشتیم و این کلاس بقیه متد های مربوط به life cycle مثل initState و... رو داشت و امکان rebuild کردن رو هم با setState داشت.

🟢دقیقا همین چیزی که الان هست فقط با انتقال متد build به کلاس StatefulWidget

حالا شما بگید اگه این اتفاق میوفتاد چه خوبی ها و یا چه بدی هایی داشت.؟


#challenge
#flutter_challenge
This media is not supported in your browser
VIEW IN TELEGRAM
یه افزوده کاربردی برای VS Code که میتونید ازش برای جستجو و اضافه کردن پکیج مورد نظرتون به فایل pubspec استفاده کنید

https://marketplace.visualstudio.com/items?itemName=jeroen-meijer.pubspec-assist
This media is not supported in your browser
VIEW IN TELEGRAM
💊Capsule

Window

ViewInsets vs ViewPadding vs Padding

#capsule
💊Capsule

🟢ViewInsets
پیکسل هایی هستن که سیستم عامل برای مواردی مثل کیبرد استفاده میکند(System UI)

در این نواحی هیچ محتوایی از اپ رندر نمیشود.

🟢ViewPadding
پیکسل هایی هستن که در طرفین دستگاه قرار دارن (بالا و پایین) مثل noch

🟢Padding
با استفاده از دو مقدار بالا محاسبه میشود.

Padding = max(0.0, viewPadding - viewInsets)

🔥این پراپرتی ها رو میتونید توی MediaQuery پیدا کنید.

#capsule
💊Capsule

🔥توی اندروید های 10 به بعد یا Ui های اختصاصی شده مثل miui شاید دیده باشین که با کشیدن دست روی طرفین صفحه نمایش (چپ و راست) میتونیم صفجه رو بک کنیم.

🟢این قسمت ها یا این پیکسل ها در واقع پیکسل هایی هستن که محتوای اپ داخلشون رندر میشه ولی input gestures توی این پیکسل ها تشخیص داده نمیشه.

🟢در واقع سیستم عامل input gestures این پیکسل ها رو خودش مصرف میکنه و اجازه مدیریت اون توسط اپ رو نمیده.

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

🔥مقدار پیکسلی که سیستم عامل توی این نواحی مصرف میکنه رو میشه با این پراپرتی از MediaQuery بدست اورد :‌

systemGestureInsets

#capsule
🔥Adaptive UI

🟢همون طور که میدونیم با فلاتر میتونیم برای پلتفرم های مختلف مثل وب، اندروید، ویندوز و... برنامه بنویسیم و از این رو برنامه ما ممکنه توی پلتفرم های مختلف یا اسکرین های مختلف (با سایزهای متفاوت) ران بشه.

🔥نکته ای که اهمیت پیدا میکنه این هست که برنامه انعطاف پذیر باشه و بتونه خودش رو با همه این شرایط وفق بده.

مثلا :
✔️تغییر چینش عناصر در سایزهای مختلف (سایز گوشی و دسکتاپ و....)
✔️استفاده از زبان طراحی مختلف در پلتفرم های مختلف
✔️ردیابی حرکات موس در پلتفرم های دسکتاپی
✔️و...

🔥برای این موضوع پکیجی با نام flutter_adaptive_ui طراحی کردم.

https://pub.dev/packages/flutter_adaptive_ui

🔥پکیج رو بررسی کنید و نظرات و باگ های احتمالی رو بگید. 🙏

❤️❤️لطفا پکیج رو توی pub لایک کنید.❤️❤️

🔥در صورت تمایل میتونید در توسعه پکیج مشارکت کنید.
Pure Coder
🔥Adaptive UI 🟢همون طور که میدونیم با فلاتر میتونیم برای پلتفرم های مختلف مثل وب، اندروید، ویندوز و... برنامه بنویسیم و از این رو برنامه ما ممکنه توی پلتفرم های مختلف یا اسکرین های مختلف (با سایزهای متفاوت) ران بشه. 🔥نکته ای که اهمیت پیدا میکنه این هست که…
توی ورژن جدید پکیج
0.8.0-dev.2

ویجت های
PlatformBuilder
AdaptiveDesign
اضافه شدند

یک constructor با نام
Adaptivebuilder.custom
هم به ویجت AdaptiveBuilder اضافه شد و بعضی از پارامتر های constructor قبلی deprecated شدند

اگه نظری راجب این ها و موارد دیگه ای که میخواین به پکیج اضافه بشه دارین توی کامنت بگین.
💊Capsule
BottomSheet
ℹ️

🔥توی متریال دیزاین دو نوع ‌Bottom Sheet داریم.

✔️Persistent
این نوع در واقع مکمل محتوای اصلی هست و جلوی تعامل کاربر با بقیه قسمت های صفحه رو نمیگیره و با لمس کردن بقیه قسمت های اپ بسته نمیشه.

🟢این نوع رو میشه به دو روش استفاده کرد :

🔥پارامتر bottomSheet توی ویجت Scaffold

🔥🔥استفاده از فانکشن
showBottomSheet
و یا
Scaffold.of(context).showBottomSheet()

🔴هر کدوم از این روش ها تفاوت هایی دارن که بعدا اشاره میکنیم.

✔️Modal
این نوع درواقع یک گزینه جایگزین برای Dialog یا popup menu هست و جلوی تعامل کاربر با بقیه قسمت های صفحه رو میگیره.

🟢در صورتی که Dismissible باشه با لمس کردن قسمت های دیگه صفحه بسته میشه.

🔥این مورد رو میشه با استفاده از فانکشن
showModalBottomSheet

استفاده کرد.

#capsule
#intermediate
💊Capsule
BottomSheet
2️⃣

✔️Persistent

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

🔥پارامتر bottomSheet توی Scaffold :‌

توی این حالت :‌

باتم شیت جزو محتوای اصلی صفحه حساب میشه.

جلوی تعامل کاربر با بقیه المان های صفحه رو نمیگیره

با لمس کردن بقیه قسمت های صفحه بسته نمیشه

امکان درگ کردن و بسته و باز کردن خود باتم شیت توسط کاربر نیست

دکمه بک به اپ بار اضافه نمیشه

با بک زدن یا Navigator.pop کل صفحه بسته میشه

🔥توی این حالت باتم شیت اون پایین صفحه میمونه و به هیچ وجه قابل بستن نیست مگر اینکه توی برنامه ست استیت کنی و توی build جدید باتم شیت نداشته باشی

#capsule
#intermediate