از Pista Academy حمایت کنید
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 61 آموزش فلاتر، مدرس به بررسی و بهروزرسانی پرووایدر فوریت پیچیدهتر میپردازد. هدف اصلی این جلسه ایجاد یک استیت برای فوریت است که در تمام اسکرینها قابل دسترسی باشد. همچنین، یک متد برای افزودن یا حذف غذا از لیست فوریت تعریف میشود. پرووایدر به طور کامل در سراسر پروژه استفاده میشود و ارتباطات مربوط به پرووایدر قدیمی حذف میشوند. در نهایت، یک متغیر برای نمایش وضعیت افزودن یا حذف غذا تعریف میشود.
نکات کلیدی
ایجاد یک استیت برای فوریت که در تمام اسکرینها قابل دسترسی باشد.
تعریف یک متد برای افزودن یا حذف غذا از لیست فوریت.
استفاده کامل پرووایدر در سراسر پروژه و حذف ارتباطات قدیمی.
تعریف متغیر برای نمایش وضعیت افزودن یا حذف غذا.
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
سلام عرض میکنم خدمت دوستان عزیز. بریم سراغ ادامه پروژهمون و این جلسه میخوایم
بریم سراغ اینکه یه دونه
پولوادر بهتر و پیچیدهتر درست بکنیم.
میخوایم بریم سراغ همون فوریتمون.
یه فایل ج یه فایل جدید اینجا درست
میکنم. اسمشو میذارم
مثلاً فوریت پرووایدر یا هر اسمی که حالا
خودتون دوست دارید هیچ فرقی نمیکنه.
ما قراره چیکار کنیم اینجا قراره چند تا کار انجام بدیم یکی اینکه خب یه
استیت اینجا درست بکنیم برای غذاهای
فوریتمون که بتونیم تو همه اسکرینها بهش
دسترسی داشته باشیم ۲
ما یه متدی داشتیم که میومد فوریتو تغییر
میداد اینا اینو اینم باید داخل این
پرووایدر تعریف بکنیم که هر جا لازمش
داریم بهش دسترسی داشته باشیم لازم نباشه
لایه به لایه اینو منتقلش بکنیم این د تا
چیزی درق چیزیه که ما باید داخل این
پرووایدر درستش بکنیم
بریم شروع بکنیم
البته اول چیزایی که ایمپ لازم داریمو
ایمپورت کنم
این اول چیزی که لازم داریم مدل میل میلم لازم داریم
جلوتر
میرم تو مدل اینم میارم
خب
میگم فاینال
فوریت میل پرووایدر
مساوی استیت آها ما اینجا بچهها
توی پرووایدر قبلی ما رفتیم سراغ چی
پرووایدر اینجا سرا پرووایدر نمیریم سراغ
یه چیزی میریم به نام استیت
نوتیفایر پروواید چرا؟ چون اینجا ما قراره دیتای استاتیک نداشته باشیم. ما اینجا
دیتاون استاتیک بود بچهها تغییر نمیکرد
اینجا دیتاون استاتیک نیست
یه کلاس باید تعریف کنم اینجا
اسمشو میذارم فوریت
میل نوتیفایر
اکستند میکنه از استیت نوتیفایر ر
لیست آف میل
مقدار اولیهشو برابر یه آرایه خالی میذارم
خب بریم سراغ متدایی که باید تعریف کنیم. ما یه دونه متد بیشتر نداشتیم که میومد
چیکار میکرد؟
متده میومد میگفتش که اگر غذایی که کاربر
من انتخاب کرده قبلاً تو لیست من بود حذفش
کن. اگر نبود اضافهش کن. وقتی اون ستاره
رو میزدین عملکردش اینجوری بود که اگه
قبلاً اضافه شده بود حذفش میکرد اگه
قبلاً نبود اضافهش میکرد به لیست فوریت
عین همین منطق رو باید اینجا الان بنویسیم
فقط یه نکته ریزی هست اینجا بچهها توی
پرووایدر خب شما اجازه ندارید که استیتتون
رو تغییر بدید اینا اگه مثلاً یه لیستی از
آرایهای از غذاها دارم نمیتونم اد کنم
یا ازش ش ریموو کنم باید دوباره بسازمش
اینو یادتون باشه خب پس میا اینجا متدمو
مینویسم
وید اسمشم میذارم تاگل
میل
تاگل
میل
فوریت
استاتوس
خب اول چک میکنم ببینم این غذای قبلاً تو استیت من بوده یا نه.
اسمشو میدازم میت از فوریت. آیا قبلاً تو فوریت بوده یا نه؟
اگه باشه این میشه ترو. اگه نباشه میشه فالس. حالا میا اینجا یه شرط میذارم بر
مبنای همین مقدار این
میگم اگر این ترو باشه یعنی قبلاً تو لیست
من بوده باید حذفش کنم میگم استیت جدید
گفتم استیتو نمیتونید تغییر بدید باید
دوباره بسازید برابر با استیت قبلی یه ورش
میزنم ور برای جاهاییه که میخوایم یه
لیست جدید بسازیم و یه لیست قبلی
میگم
اون غذاهایی که
آیدیشون
برابر نیست با اون غذایی که اومده رو نگه
دار بقیه رو بنداز بره
بچهها ور اگر شرط داخلش ترو باشه اونو نگه میداره فالس باشه نگه نمیداره الان
غذاهایی که با این غذای ورودی برابر نباشن
میشن ترو نگه میداره اینا رو
یه السم اینجا میذارم اگر تو لیست فوریت
من نبود بود اونوقت باید اضافهش بکنیم.
چهجوری اضافه میکنیم؟ میگم استیت
برابر است با اسپد اپراتور مقدار قبلیو
نگه میدارم یه دونه جدید بهش اضافه
میکنم.
اینم متد ما برای اینکه بخوایم فیوریتمون رو تغییر بدیم یا در حقیقت تغییرش بدیم
دیگه یا نداره.
استپ بعدیمون چیه؟
اس بعدیمون اینه که
اینجا بیام بگم که
رف
ریتن این کلاسمو
اینم اینجا بیارید لیست
میل
به این صورت
اینو یه خوشگلش بکنیم اینجوری میشه بچهها
این شد پرووایدر جدیدمون برای فیوریت
خب بریم حالا از این استفاده بکنیم هر
جایی که لازم داریم از این استفاده بکنیم
من اینو کپی میکنم که نخوام بنویسمش ش
میام داخل تبز اول باید اینو ایمپورتش کنم دقیقاً
خب خب میایم اینجا کجا میرفتم تو صفحه فوریت
اینجا که ایندکسم یک بود اینجا
میام میگم که
فوریت میز
مساوی اون رف
دات واچ
واچ کنه اینو
حواست به این پرووایدر باشه بعد برید داخل این خب حالا من باید اینو
جایز جایگزین کنم با اینم
باید عوضش بکنم چون دیگه به اینم نیاز نداریم ما اینجا
اتفاق دیگه هم که میفته حالا سراغ این میایم بیایم بالا من یه استیتی اینجا
تعریف کرده بودم کوشش
اینا بچهها اینم دیگه لازم ندارید
این تاگلم متدام دیگه لازم ن چون متدیو داریم از پرووایدری میاریم اینم حتی
بچهها لازم نداریم اینجا حالا بعداً
میایم سراغش فعلاً کاری باهاش نداریم بچه
خوبیه خب بیایم اینجا سراغ اینا
حالا یه سؤال ما توی کتگوری اسکرین بچهها لازم داریم اینو
تو میلزم اینو لازم داریم به نظرتون
برگردیم به این عکس
هدف من از پرووایدر چی بود هدف من این بود
که اون متوده رو برسونم به این کسی که
نیاز داره بدون اینکه این وسطیا درگیر شن
پس من این تاگله رو نه تو کتگوری نیاز
دارم نه تو میلز نیاز دارم فقط اینجا
نیازش دارم
پس عملاً الان دیگه نباید اینجا به اینا
بدمش اینو باید حذف کنم اینم باید حذف کنم
برم داخل میرزر اسکرین و کتگوریز اسکرین
اینا رو هرچی اثر از اینا هست پاک کنم
پس من اینو از اینجا برمیدارم میگم تو دیگه لازمش نداری من قراره مستقیم خودم
برسونم به دست میل دیتیل
این خطا به خاطر اینکه تو کانستراکتورشون
تعریف شده باید برم از اونجاهم پاکش بکنم
بگم که تو دیگه اینو لازم نداری به عنوان ورودی
بعد
اینم لازم نداری اینجا هم دیگه لازم نیست
پاسش بدی به میلز چون میلزم دیگه لازم
نداره
بریم تو میلز
تو هم اینجا اینو دیگه لازم نداری به عنوان ورودی دی
بعد اینجام لازم نداری لازم نیست به این
پاس بدی اینم خودش مستقیم دریافت میکنه
اینو
خب بریم سراغ خان آخر یعنی میل دیتل اسکرین
میگم شما دیگه به عنوان ورودی چیزی به نام
اینو نداری قراره مستقیم بهت بدم اینم
نداری
اینو قراره به صورت مستقیم از پرووایدر
دریافت بکنی
خب من اینا رو همه رو اضافهها رو ببندم با این کار اول ایمپورت میکنم چیو
اسلسو با چی عوض میکنیم؟ با
کانسیومر ویجت تون سیتلس بود بیلد من باید
یه تغییری بکنه اینجا بچهها یه پارامتر
دومی رو پاس میدم برای دسترسی به رف
بهش میگم ویجدت رف
حالا برای دسترسی به در حقیقت اون تاگله اون متده میام چیکار
میکن میکنم میام اینجا تو آمپرس میگم برو
داخل رف
خب
[ __ ] کن واچ نمیخواد [ __ ] بچهها چون اینجا متده خب میگم برو اون فوریت میل پرووایدر
نوتیفاifفایر برای دسترسیم اون کلاسش بعد داخل کلاس من
یه چیزی داشتم به به نام تاگ میل فوریت
استاتوس که یه میل به دنبال ورودی قبول
میکرد.
تمام
میشه نحوه دستیس پیدا کردن به این متده از طریق این کلاس.
خب حالا استپ بعدی چیه؟ من توی اینجا یه دونه مسیجم داشتم گفتم بعداً
میام سابقش بچه خوبیه
اینو برمیدارم
اینو پاک کنید چقدر کدمون داره سبکتر
میشه بچهها میایم اینجا میگم بعد از این
مسیجه رو نشون بده
اما مسیج یه نکته داره من بذار خوشگلش کنم
اینو خب
اینکه این موفق هست یا نیستو باید حواسمون
باشه. خب
میام داخل
اینجا
میگم که تو یه چیزی بهم برگردون بهم بگو
موفق بود یا نبود یعنی ببخشید اضافه شد یا
کم شد اینو باید بهم بگی میگم اگر
از ریست حذفش کردی
ریترن کن فالس
اگر لیست حذفش کردی اگر اضافه کردی ریترن
کن ترو من اینجوری میتونم بفهمم اینور
حالا اینجا میام میگم که
خروجی اینو یه فاینال تعریف میکنم اینجا
اسمشو میذارم واز ادرو
باشه این واز اد یعنی اضافه شده اگه فارس باشه اضافه نشده حالا میام اینجا داخل این
تکسته اینو شرطیش میکنم اگه میگم ترو بود
یعنی اضافه شده یعنی میر
د از فورید مثلاً
اگه فالس بود
الان فیورت من چیزی توش هست نیست. خب میام تو غذای آلمانی مثلاً اینو اضافه میکنم.
الان اضافه شد.
بله
حالا میام اینجا برش میدارم ریموو شد.
دقیقاً
اینم از این پرووای بریم بیایم بچهها
جلسه بعدی صحبت کنیم فعلاً خداحافظ.
‏Yeah.
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
برای این کار، یک پرووایدر فوریت ایجاد میشود که در سراسر پروژه استفاده میشود و استیت آن در تمام اسکرینها قابل دسترسی است.
یک متد به نام addOrRemoveFood تعریف میشود که میتواند غذا را از لیست فوریت افزوده یا حذف کند.
به منظور استفاده کامل از پرووایدر جدید و ایجاد یک ساختار بهتر، ارتباطات مربوط به پرووایدر قدیمی حذف میشوند.
آخرین بهروزرسانی محتوای متنی:
در این دوره جامع و پروژهمحور با فلاتر و دارت از صفر تا صد آشنا میشوید و با ساخت هشت اپلیکیشن واقعی که هر کدام نکات کلیدی و پرکاربرد فلاتر را پوشش میدهد، مهارتهای خود را به سطح بعدی میبرید. آنچه در این دوره یاد میگیرید: مقدمه و نصب ابزارها: آشنایی با فلاتر، دارت و راهاندازی محیط توسعه مبانی دارت و فلاتر: یادگیری سینتکس دارت و ساخت ویجتهای پایه با اپ «تاسانداز (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 🔔 همین حالا سابسکرایب کنید تا ویدیوهای آینده را از دست ندهید و یادگیری فلاتر را با هم شروع کنیم!