از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 78 آموزش فلاتر، مدرس به بررسی نحوه نمایش حالت لودینگ در زمان دریافت دیتا پرداخته و توضیح میدهد که چگونه میتوان دکمههای ارسال و ریست را در زمان ارسال دیتا غیرفعال کرد. همچنین، نحوه مدیریت ارورهای ریکوست و نمایش پیام خطا به کاربر با استفاده از استاتوس کدها مورد توجه قرار گرفته است.
نکات کلیدی
استفاده از متغیر لودینگ برای نمایش حالت در حال دریافت دیتا و جایگزین کردن متن پیشفرض با علامت لودینگ.
غیرفعال کردن دکمههای ارسال و ریست در زمان ارسال دیتا و نمایش پیام خطا در صورت رخ دادن ارور.
مدیریت ارورهای ریکوست با استفاده از استاتوس کدها و نمایش پیام خطا به کاربر.
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
از متغیر لودینگ استفاده کرده و متن پیشفرض را با علامت لودینگ جایگزین میکنیم.
در زمان ارسال دیتا، دکمهها را غیرفعال میکنیم و پیام خطا در صورت رخ دادن ارور نمایش داده میشود.
از استاتوس کدها برای مدیریت ارورهای ریکوست استفاده میشود و پیام خطا به کاربر نمایش داده میشود.
آخرین بهروزرسانی محتوای متنی:
در این دوره جامع و پروژهمحور با فلاتر و دارت از صفر تا صد آشنا میشوید و با ساخت هشت اپلیکیشن واقعی که هر کدام نکات کلیدی و پرکاربرد فلاتر را پوشش میدهد، مهارتهای خود را به سطح بعدی میبرید. آنچه در این دوره یاد میگیرید: مقدمه و نصب ابزارها: آشنایی با فلاتر، دارت و راهاندازی محیط توسعه مبانی دارت و فلاتر: یادگیری سینتکس دارت و ساخت ویجتهای پایه با اپ «تاسانداز (Roll Dice)» غوطهوری در فلاتر: پیادهسازی اپ «کوئیز (Quiz)» برای مسلط شدن بر ساختار و چرخه حیات ویجتها دیباگ و رفع اشکال: تکنیکهای عیبیابی و ابزارهای Flutter DevTools واکنشگرایی و تمینگ: ساخت «Expense Tracker» برای یادگیری ویجتهای تعاملی، موضوعبندی (Theming) و طراحی ریسپانسیو مدیریت وضعیت (State Management): از Provider تا روشهای داخلی دارت با اپ «TODO» و «Meals» مسیریابی بین صفحات: ناوبری پیشرفته با «Meals App» و انتقال داده بین صفحات انیمیشنها و جلوههای بصری: افزودن حرکات پویا و تراکیب انیمیشنی در «Meals App» فرمها و ورودی کاربر: دریافت و اعتبارسنجی اطلاعات با «Shopping List» ارتباط با سرور: ارسال و دریافت HTTP، کار با JSON و REST API در «Shopping List» دسترسی به امکانات بومی دستگاه: استفاده از دوربین و ذخیرهسازی در «Favorite Places» فراخوانی پوش نوتیفیکیشن و چت زنده: ترکیب فلاتر با Firebase برای ساخت اپ چت با اعلان لحظهای بهروزرسانیها و چشمانداز آینده: نکات پایانی، منابع پیشرفته و مسیر یادگیری ادامهدار چرا این دوره؟ پروژهمحور و گامبهگام، مناسب برای تازهکارها و افراد با تجربه متوسط پوشش تمام جنبههای کلیدی: از طراحی رابط کاربری و انیمیشن تا اتصال به سرور و مدیریت وضعیت پیادهسازی چندین اپلیکیشن واقعی که میتوانید به سادگی برای نمونهکار شخصی یا پروژههای شغلی استفاده کنید لینک گیت هاب دوره جهت دسترسی به کد پروژه های هر فصل https://github.com/pistaacademy/flutter 🔔 همین حالا سابسکرایب کنید تا ویدیوهای آینده را از دست ندهید و یادگیری فلاتر را با هم شروع کنیم!
من این اپلیکیشنم میاد بالا میایم تو این
صفحه خب
یه تایمی میبره که مثلاً این دیتا دریافت
بشه. تو اون زمانی که قراره دیتا دریافت
بشه
در حقیقت ما اینجا چی میبینیم تو صفحه یه
متنی میبینیم که مثلاً هیچ آیتمی وجود
نداره
و این از لحاظ بستری خیلی خوشگل نیست
میخوام به جای اون متنه یه علامت یه چیز
بیارم یه دونه لودینگ بیارم بذارم اینجا و
اون لودینگه رو نشون بده به نظرم قشنگتره
نسبت به اینکه بخواد یه متنی بنویسه که
مثلاً در حال لود مثلاً یه چیز هیچی
دریافت نشده از اینجور چیزا
برای اینکه بخوایم یه همچین کاری بکنیم
میایم یه متغیری رو تعریف میکنیم بعد
اونو استیت در نظر میگیریم حالتش که عوض
میشه مثلاً لودینگه باشه یا نباشه
میایم اینجا
توی گروسری لیست این بالا یه دونه وریبل تعریف میکنم
دیفالتشم میذارم ترو. خب
حالا
میام میگم که اونجایی که قراره که من برم
ریکوست بزنم خب کجاست؟
اینجا اینجا که ریکوستم تموم شده و آیتم رو
دریافت کردم میام میگم که مقدار
ایزل لودینگو
بکن فالس
ولی قبلش تروئه تا زمانی که دیتا دریافت
بشه توئه اینجا که دیتا دریافت میشه
میکنمش فالس بعد حالا بر اساس میام یه
شرطی میذارم توی یوآ وای میگم که اگر
مثلاً ایزل لودینگ ترو بود لودینگو نشون
بده اگه نبود اون دیتا رو نشون بده اینجا
توی کانتکستم
اینجا قبل از اینکه این ایف رو بخوام نشون
بدم اینجا میام یه شرط میذارم میگم اگر
ایزل لودینگ ترو بود
قبل از اینکه ایزل لودینگ ترو باشه قبل که نه زمانی که از لودینگ تروئه تو
کانتنتو اونی که اون پایینه نشون نداری ان
اقدر غلط امراه مینویسم
کانتنت اون پایینی نیست اینو نشون بده
یه چیزی داریم به نام سیرکولار پروگرس اینتیگیتور اگه اشتباه نکنم همین
باید بشه میگم اینو نشون بدم
تا زمانی که لود بشه. خب حالا بذار من این اپو بیارم بالا.
نگاه کنید یه لودینگی میاد بعد دیتا میاد دیتا رو نشون میده و این حالت خوب قضیهست.
خب این نکته اول که میخواستیم راجع بهش
صحبت کنیم.
اما نکته دوم مال اد آیتمه.
توی اد آیتم زمانی که شما این اد آیتمو
میزنید یه زمانی طول میکشه تا این بره
تو دیتابیس بشینه. امکان داره کاربر من تو
اون فاصله دکمه اد آیتمو دوباره بزنه یا
دکمه ریستو بزنه دو دفعه بزنه مثلاً اد
آیتمو یا ریست بزنه کلاً بیاد بیرون
من باید چیکار کنم؟ بیام اینم شرطی کنم
بگم زمانی که دکمه اد آیتمو زدی
تا موقعی که دیتا داره ارسال میشه این د
تا دکمه باید غیر فعال بشه
تا اون موقعی که داره ارسال میشه پس میام
توی
نیو آیتم باز اینجا یه وریبل جدید تعریف
میکنم
همینجا
اسمشو میذارم از سندینگ بود
فالس خب
باز میام بر اساس این شرطیش میکنم اول به
بگید ایستندینگو کجا باید من ترو بکنم
خب مقدارشو توی اینجا که دارم دیتا رو
میخوام سند کنم
بعد از سیو بذارید این کارو بکنم بعد از سیو اینجا که قراره ریکوستمو بزنم میام
میگم که ست استیت
بعد میگم که ایستندینگم بشه ترو اینجا جاییه که دیتا ق در قراره که ارسال بشه
خب
یه فاصلهای هم بدم بینش خب
بعد میام اینو بر اساس این ایستندینگه یه
شرطیی میذارم شرطی در حقیقت نمایش میدم
دیتا رو خب پایین
چی میگه
آ استفاده نشد استفاده میکنم این پایین
پایین این دکم کو
یه ریست یه اد آیتمه درسته خب این آمپرس کی میشه غیر فعالش کرد زمانی که من به جای
فانکشن بهش یه دونه نال پاس بدم پس بیام
اینجا یه دونه ترنر اکسپرشن میرسم میگم
اگر ای سندینگ ترو بود نال بفر بفرست اگه
نبود اون آرایه رو بفرست
پس اگه ایستندینگ ترو بود نالو میفرسته داخل آمپرست دکمهم دیزیبل میشه اگه ترو
باشه اگه فالس باشه اون آرایه رو اون
فانکشن جلوشو میفرسته
همین کارو باید پایینی هم انجام بدم
که اگر ایستندینگ ترو بود نال اگه نبود سیو آیتم
خود این چیزی هم که اینجا نمایش میدمو
بچهها باید عوض کنم میگم که اگر ایسندینگ
ترو بود یعنی در حال ارسال بود مثلاً یه
دونه لودینگ اینجا نشون بده اگر نبود این
ادایدمو نشون بده این رو هم حت میشه شرطی
کرد چهجوری این کارو میکنیم میام میگم که
اینو میذارم اینجا فقط به جای نال یه دونه
سایز باکس میذارم. خب میخوام اون لودینگم توی یه باکس مربعی باشه که
اندازهش خیلی بزرگ نشه.
یه ارتفاع بهش میدم مثلاً ۱۶ تا
یه عرض میدم باز ۱۶ تا
یه چاد بهش میدم همون سیرکولاره سیرکولار
پروگرس ایندیکیتور
خب این میشه کلیتش اگر ایستندینگ تور باشه
اینو نشون میده نباشه دکمه رو نشون میده
خب بریم اینم یه تست بکنیم
خب میام اینجا
مثلاً میزنم که
کار مثلاً مهم نیست خیلی
نگاه کنید یه لحظه میبینید لودینگ میشه
بعد میاد اینجا نمیذاره دکمه رو دوباره
بزنید خب اما برسه به موضوع بعدی. موضوع
بعدی بحث ارور هندلینگه بچهها. خب ما این
ریکوستایی که میفرستیم احتمال خطا توش
هست دیگه لزوماً که همه همیشه ریکوست درست
جواب نمیده. یه مثالی براتون بزنم. مثلاً
فرض کنید آدرسی که شما اینجا وارد کردید
من این آدرسه رو
یه جا کپی کنم داشته باشمش.
چه اتفاقی میفته؟ میره تو لودینگ فکر کنم گیر میکنه تا
دیتا نمیتونه بگیره دیگه بله اینم خوب
نیست من باید اینجا یه خطایی به کاربر
نشون بدم و بگم که در حقیقت
یه اتفاقی افتاده
خطا کی رخ میده از کجا میفهمیم خطا رخ
داده زمانی که شما یک ریکوستی میزنید و
اون سرور به شما جواب میده اگر استاتوس
کدش ۲۰۰ باشه اوکیه اگه ۴۰۰ به بالا باشه
یعنی خطا رخ داده حالا حالا چون هر عددی
۴۰۴ ۴۰۱ ۵۰۰ هرچی
پس میام اینجا یه شرطی میذارم میگم اگر
استاتوس کد من
بالاتر از ۴۰۰ بود معنیش اینه که یه خطایی
رخ داده کجا میا اینجا
این وسط میگم اگر
استاتوس خودش بزرگتر مساوی ۴۰۰ بود خود ۴۰۰م طبیعتاً فرمودم
اگر بزرگتر مساوی ۴۰۰ بود تو بیا چیکار کن
یه متغیریرو تعریف میکنم به نام ارور
کنارم این ازلودینگ میذارمش میگم که یه
متغیری دارم از جنس مثلاً
استرینگم هست
دیفالتشم ناله اروری توش نیست خب حالا میام اینجا میگم که زمانی که استاتوس کد
من ۴۰ده
یعنی یه خطایی رخ داده تو مقدار ارور رو
باید عوض کنی خب مثلاً من اینجا میگم که
ارورم
برابر بشه با مثلاً فعل
تو فتا
پلیز ترا ا لتر
پ خط خیلی رسمی و متداول خب پس اگر
استاتوس کدام من بالای ۴ ساعت بود یعنی
خطایی رخ داده حالا فقط کافیه که
توی نمایشم توی صفحه بیام با این لودینگ
با این اروره یه حرکت ی بزنم خب بیام بگم
که اگر اروری وجود داشت تو به جایی که اون
لودینگ رو نشون بدی چیو نشون بده بیا در
حقیقت این متنه رو نشون بده میام پایین
قبل این اسکفولده میگم اگر
با سنتر چاد
تکست
داخلش همون اروررو میذارم مطمئنم هستم که ناد نیست یه دونه علامت
تعجب اینجا میذارم مطمئنم ناد نیست
خب
یه لحظه از ذهنم پرید. آها زمانی که من خطا دریافت میکنم خب
اینجا بچهها من اینجا یه حرکتی زدم گفتم
که اگر خطا دریافت کردم این کارو بکن
درسته؟ خب اینو باید استیتشو عوض کنم که
یوآی هم تحویل کنه دیگه پس اینجا یه ست
استیت میذارم
اینو میذارم داخل ست استیت که یوآی هم تغییر بکنه دیگه ولی این اتفاق نمیفته
بریم یه بار که چک کنیم
الان یه لودینگی میکنه بعد خطا رو میده درست شد و مشکلمون شد
خب من بذارید برگردونم خودمو به حالت
درستش که
آها من اینجا یه آدرس اشتباه نوشتم باز دوباره
اینه
خیلی خب اینم از این بریم بیایم ادامهش جلسه بعدی صحبت کنیم فعلاً خداحافظ