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

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

⭕️پشتیبانی:
@PureCoder_support
@MohammadTaherri
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
💊Capsule

Window

ViewInsets vs ViewPadding vs Padding

#capsule
🔥8
💊Capsule

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

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

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

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

Padding = max(0.0, viewPadding - viewInsets)

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

#capsule
5🔥4
💊Capsule

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

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

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

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

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

systemGestureInsets

#capsule
👍13🔥5
💊Capsule
BottomSheet
ℹ️

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

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

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

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

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

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

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

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

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

استفاده کرد.

#capsule
#intermediate
🔥141👍1
💊Capsule
BottomSheet
2️⃣

✔️Persistent

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

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

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

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

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

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

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

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

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

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

#capsule
#intermediate
🔥6
💊Capsule
BottomSheet
3️⃣

✔️Persistent

و اما روش دوم

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

توی این حالت:

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

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

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

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

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

🔥توی این حالت باتم شیت قابل درگ شدن و بسته و باز شدن توسط کاربر هست و با بک هم بسته میشه.

#capsule
#intermediate
🔥6
BottomSheet
4⃣

خب تا اینجا bottom sheet های نوع Persistent رو دیدیم و با دو روش استفاده از اون ها ، شباهت ها و تفاوت های این روش ها اشنا شدیم.

حالا چرا به اینا میگن Persistent؟

🔥این کلمه به معنی ماندگار هست (یه چیز توی این مایه ها 😝)

حالا چون این نوع از bottom sheet ها مزاحم کار کردن با بقیه قسمت های صفحه نمیشن و با کار کردن با بقیه قسمت های صفحه بسته نمیشن، توی متریال دیزاین بهشون میگن

Persistent Bottom Sheets

#capsule
#intermediate
🔥5👍1
🟢<type>(<scope>): <subject>

✔️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
👍9🔥5