🔥Challenge
▶️سناریو :
یه قسمتی از اپمون قراره که جستجو توی محصولات یا... رو پیاده کنیم.
🔴یه Search Box لازم داریم.
🔴کاربر شروع میکنه به نوشتن و همزمان باید جستجو انجام بشه...
❓چالش :
فرض کنید ازمون خواسته شده که هر وقت کاربر شروع کرد به نوشتن و دستشو برداشت و ۲ ثانیه طول کشید (ینی بین تایپ کردن کاربر ۲ ثانیه وقفه ایجاد شد) بلافاصله جستجو انجام شه...
🟢یعنی اگه کاربر بدون وقفه (۲ثانیه ای) به تایپ کردن ادامه داد هیچ جستجویی انجام نمیشه.
توضیح بدید که این مساله رو، به خصوص وقفه ۲ ثانیه رو چطوری هندل میکنید؟
⛔️ساختار معماری در این چالش مدنظر نظر نیست.
✅فقط نحوه هندل کردن این موضوع به خصوص وقفه مهم هست.
✅در صورت لزوم میتونید کد هم ارائه کنید.
#challenge #flutter_challenge #dart_challenge
#intermediate
▶️سناریو :
یه قسمتی از اپمون قراره که جستجو توی محصولات یا... رو پیاده کنیم.
🔴یه Search Box لازم داریم.
🔴کاربر شروع میکنه به نوشتن و همزمان باید جستجو انجام بشه...
❓چالش :
فرض کنید ازمون خواسته شده که هر وقت کاربر شروع کرد به نوشتن و دستشو برداشت و ۲ ثانیه طول کشید (ینی بین تایپ کردن کاربر ۲ ثانیه وقفه ایجاد شد) بلافاصله جستجو انجام شه...
🟢یعنی اگه کاربر بدون وقفه (۲ثانیه ای) به تایپ کردن ادامه داد هیچ جستجویی انجام نمیشه.
توضیح بدید که این مساله رو، به خصوص وقفه ۲ ثانیه رو چطوری هندل میکنید؟
⛔️ساختار معماری در این چالش مدنظر نظر نیست.
✅فقط نحوه هندل کردن این موضوع به خصوص وقفه مهم هست.
✅در صورت لزوم میتونید کد هم ارائه کنید.
#challenge #flutter_challenge #dart_challenge
#intermediate
🔥Challenge
▶️سناریو :
میخوایم یک فرایند Sign up و Sign in شبیه به تلگرام رو انجام بدیم.
1⃣Sign up
وقتی که برای اولین بار وارد اپ میشیم و از قبل اکانت نداریم.
✔️شماره موبایل دریافت میشه و کد تایید فرستاده میشه.
✔️کد تایید اعتبار سنجی میشه.
✔️اسم و فامیل دریافت میشه و وارد اپ میشیم.
2⃣Sign in
وقتی که از قبل اکانت داریم.
✔️شماره موبایل دریافت میشه و کد تایید ارسال میشه.
✔️کد تایید اعتبار سنجی میشه و وارد اپ میشیم.
❓چالش :
ℹ️از دید کاربر معمولی احتمالا فرایند sign up و sign in به صورت کاملا مستقل پیاده سازی شده، توضیح بدید که ایا این فرایند ها مستقل هستند یا اینکه قسمتی از این دو فرایند به صورت مشترک پیاده سازی میشوند.
2⃣این فرایند ها رو تحلیل کنید و بگید چه api هایی و با چه جزییاتی (ساختار api) برای پیاده سازی این فرایندها نیاز دارید.
#challenge #flutter_challenge #intermediate
▶️سناریو :
میخوایم یک فرایند Sign up و Sign in شبیه به تلگرام رو انجام بدیم.
1⃣Sign up
وقتی که برای اولین بار وارد اپ میشیم و از قبل اکانت نداریم.
✔️شماره موبایل دریافت میشه و کد تایید فرستاده میشه.
✔️کد تایید اعتبار سنجی میشه.
✔️اسم و فامیل دریافت میشه و وارد اپ میشیم.
2⃣Sign in
وقتی که از قبل اکانت داریم.
✔️شماره موبایل دریافت میشه و کد تایید ارسال میشه.
✔️کد تایید اعتبار سنجی میشه و وارد اپ میشیم.
❓چالش :
ℹ️از دید کاربر معمولی احتمالا فرایند sign up و sign in به صورت کاملا مستقل پیاده سازی شده، توضیح بدید که ایا این فرایند ها مستقل هستند یا اینکه قسمتی از این دو فرایند به صورت مشترک پیاده سازی میشوند.
2⃣این فرایند ها رو تحلیل کنید و بگید چه api هایی و با چه جزییاتی (ساختار api) برای پیاده سازی این فرایندها نیاز دارید.
#challenge #flutter_challenge #intermediate
🔥Challenge
❓چالش :
تفاوت Future.delayed با Timer چیه؟ 🤔
#challenge
#dart_challenge
#begginer
#intermediate
❓چالش :
تفاوت Future.delayed با Timer چیه؟ 🤔
#challenge
#dart_challenge
#begginer
#intermediate
🔥Challenge
❓چالش :
اگر بخوایم که یه قطعه کد بلافاصله بعد از کدهای دیگه ولی بدون تاخیر زمانی اجرا بشه چه راه حلی به ذهنتون میرسه ؟ 🤔
#challenge
#dart_challenge
#intermediate
❓چالش :
اگر بخوایم که یه قطعه کد بلافاصله بعد از کدهای دیگه ولی بدون تاخیر زمانی اجرا بشه چه راه حلی به ذهنتون میرسه ؟ 🤔
#challenge
#dart_challenge
#intermediate
💊Capsule
BottomSheet
ℹ️
🔥توی متریال دیزاین دو نوع Bottom Sheet داریم.
✔️Persistent
این نوع در واقع مکمل محتوای اصلی هست و جلوی تعامل کاربر با بقیه قسمت های صفحه رو نمیگیره و با لمس کردن بقیه قسمت های اپ بسته نمیشه.
🟢این نوع رو میشه به دو روش استفاده کرد :
🔥پارامتر bottomSheet توی ویجت Scaffold
🔥🔥استفاده از فانکشن
showBottomSheet
و یا
Scaffold.of(context).showBottomSheet()
🔴هر کدوم از این روش ها تفاوت هایی دارن که بعدا اشاره میکنیم.
✔️Modal
این نوع درواقع یک گزینه جایگزین برای Dialog یا popup menu هست و جلوی تعامل کاربر با بقیه قسمت های صفحه رو میگیره.
🟢در صورتی که Dismissible باشه با لمس کردن قسمت های دیگه صفحه بسته میشه.
🔥این مورد رو میشه با استفاده از فانکشن
showModalBottomSheet
استفاده کرد.
#capsule
#intermediate
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
BottomSheet
2️⃣
✔️Persistent
گفتم که این مورد رو میشه به دو روش پیاده کرد.
🔥پارامتر bottomSheet توی Scaffold :
توی این حالت :
✅باتم شیت جزو محتوای اصلی صفحه حساب میشه.
✅جلوی تعامل کاربر با بقیه المان های صفحه رو نمیگیره
✅با لمس کردن بقیه قسمت های صفحه بسته نمیشه
❌امکان درگ کردن و بسته و باز کردن خود باتم شیت توسط کاربر نیست
❌دکمه بک به اپ بار اضافه نمیشه
❌با بک زدن یا Navigator.pop کل صفحه بسته میشه
🔥توی این حالت باتم شیت اون پایین صفحه میمونه و به هیچ وجه قابل بستن نیست مگر اینکه توی برنامه ست استیت کنی و توی build جدید باتم شیت نداشته باشی
#capsule
#intermediate
💊Capsule
BottomSheet
3️⃣
✔️Persistent
و اما روش دوم
🔥استفاده از فانکشن
showBottomSheet
یا
Scaffold.of(context).showBottomSheet
توی این حالت:
✅باتم شیت جلوی تعامل کاربر با بقیه قسمت های صفحه رو نمیگیره
✅با لمس کردن بقیه قسمت های صفحه بسته نمیشه
❌امکان درگ کردن و بسته و باز کردن باتم شیت توسط کاربر وجود داره
❌دکمه بک به اپ بار اضافه میشه
❌با بک زدن یا Navigator.pop ابتدا باتم شیت بسته میشه و با بک دوم صفحه
🔥توی این حالت باتم شیت قابل درگ شدن و بسته و باز شدن توسط کاربر هست و با بک هم بسته میشه.
#capsule
#intermediate
BottomSheet
3️⃣
✔️Persistent
و اما روش دوم
🔥استفاده از فانکشن
showBottomSheet
یا
Scaffold.of(context).showBottomSheet
توی این حالت:
✅باتم شیت جلوی تعامل کاربر با بقیه قسمت های صفحه رو نمیگیره
✅با لمس کردن بقیه قسمت های صفحه بسته نمیشه
❌امکان درگ کردن و بسته و باز کردن باتم شیت توسط کاربر وجود داره
❌دکمه بک به اپ بار اضافه میشه
❌با بک زدن یا Navigator.pop ابتدا باتم شیت بسته میشه و با بک دوم صفحه
🔥توی این حالت باتم شیت قابل درگ شدن و بسته و باز شدن توسط کاربر هست و با بک هم بسته میشه.
#capsule
#intermediate
BottomSheet
4⃣
خب تا اینجا bottom sheet های نوع Persistent رو دیدیم و با دو روش استفاده از اون ها ، شباهت ها و تفاوت های این روش ها اشنا شدیم.
❓حالا چرا به اینا میگن Persistent؟
🔥این کلمه به معنی ماندگار هست (یه چیز توی این مایه ها 😝)
حالا چون این نوع از bottom sheet ها مزاحم کار کردن با بقیه قسمت های صفحه نمیشن و با کار کردن با بقیه قسمت های صفحه بسته نمیشن، توی متریال دیزاین بهشون میگن
Persistent Bottom Sheets
#capsule
#intermediate
4⃣
خب تا اینجا bottom sheet های نوع Persistent رو دیدیم و با دو روش استفاده از اون ها ، شباهت ها و تفاوت های این روش ها اشنا شدیم.
❓حالا چرا به اینا میگن Persistent؟
🔥این کلمه به معنی ماندگار هست (یه چیز توی این مایه ها 😝)
حالا چون این نوع از bottom sheet ها مزاحم کار کردن با بقیه قسمت های صفحه نمیشن و با کار کردن با بقیه قسمت های صفحه بسته نمیشن، توی متریال دیزاین بهشون میگن
Persistent Bottom Sheets
#capsule
#intermediate
توی این پست راجب خط اول صحبت میکنم.
🟢<type>(<scope>): <subject>
✔️type : required
✔️scope : optional
✔️subject: required
✅type
میتونین به صورت قراردادی توی پروژه ای که دارین انجام میدین type های مختلف رو مشخص کنید .
🔥یه سری type هایی که مرسوم هست :
🔰feat(feature)
وقتی یه چیز جدیدی اضافه کردی
🔰docs
وقتی داکیومنت تغییر کرده یا داکیومنت نوشتی
🔰fix
وقتی یه باگی رو فیکس کردی
🔰refactor
یه کدی رو تغییر دادی که نه ویژگی جدید اضافه شده و نه باکی فیکس شده
🔰style
کد ها رو فرمت کردی
مثلا خطهای اضافه رو پاک کردی
اسپیس ها رو درست کردی
که فقط کدها قشنگتر به نظر بیان
🔰test
یه تستی نوشتی
🔰chore
کارهایی مثل اضافه کردن به دپندنسی یا فایل pubsoec که تغییری توی کدها ایجاد نمیکنن
#git
#intermediate
🟢<type>(<scope>): <subject>
✔️type : required
✔️scope : optional
✔️subject: required
✅type
میتونین به صورت قراردادی توی پروژه ای که دارین انجام میدین type های مختلف رو مشخص کنید .
🔥یه سری type هایی که مرسوم هست :
🔰feat(feature)
وقتی یه چیز جدیدی اضافه کردی
🔰docs
وقتی داکیومنت تغییر کرده یا داکیومنت نوشتی
🔰fix
وقتی یه باگی رو فیکس کردی
🔰refactor
یه کدی رو تغییر دادی که نه ویژگی جدید اضافه شده و نه باکی فیکس شده
🔰style
کد ها رو فرمت کردی
مثلا خطهای اضافه رو پاک کردی
اسپیس ها رو درست کردی
که فقط کدها قشنگتر به نظر بیان
🔰test
یه تستی نوشتی
🔰chore
کارهایی مثل اضافه کردن به دپندنسی یا فایل pubsoec که تغییری توی کدها ایجاد نمیکنن
#git
#intermediate