برای شرکت در این دوره به پشتیبانی سایت در تلگرام پیام بدید. (به طور مستقیم و از طریق سایت اقدام نکنید) یه دوره ی جذاب, …
دوره, دوره ی فلاتره. ولی این فلاتر با بقیه فلاتر ها فرق میکنه.
اینجا قرار نیست که 4 تا ویجت مختلف مثل Container و … بزنیم توی سر هم و یه View درست کنیم.
پس قراره چکار کنیم؟
میخوایم با هم یه سفری به اعماق فلاتر داشته باشیم!!!
کمی خودمون رو از پوسته ی فلاتر (ویجت ها) جدا میکنیم و شروع میکنیم به حفاری کردن و نفوذ به لایه های زیرین فلاتر. میخوایم ببینیم اون پایین مایین ها چه خبره.
در پایان این دوره از خودمون انتظار داریم که هر کد فلاتری رو با پوست و گوشت و استخون درک کنیم و هر موقع یه کد فلاتری دیدیم, سیر اتفاقاتی که رخ میده تا در نهایت یه تصویر رو روی اسکرین ببینیم, برامون مرور بشه…
پس حتمن همین الان متوجه شدی که این دوره برای برنامه نویس های خاص طراحی شده. پس اگه تو هم یکی از اون ها هستی, تا آخر این متن رو بخون…
مباحثی که در این دوره یاد میگیریم به شرح زیر هستن:
در ابتدا میریم سراغ دارت و یکم دل و روده ی async ها رو میریزیم بیرون و میبینم که وقتی از Future ها استفاده میکنیم چه اتفاقاتی میوفته. اینجا نکات خیلی خوبی یاد میگیریم و درکمون از async ها و روشی که دارت برای هندل کردنشون استفاده میکنه بالاتر میره.
حواست باشه, اینجا قرار نیست async و await یا async programming رو از صفر صفر یاد بگیریم. پس باید از قبل بلد باشی. اینجا قراره که یه کوچولو دل و رودشو بریزیم بیرون و بفهمیم که دارت چطوری هندلشون میکنه. پس اگه async ها رو تا حالا استفاده کردی و مشکلی باهاشون نداری, بیا اینجا تا به یه درک عمیق ازشون برسی!!!
در ابتدا قراره با معماری فلاتر آشنا بشیم و بفهمیم فلاتر از چه اجزایی تشکیل شده. اگر توی یکی دو سال گذشته پست های من رو توی کانال Pure Coder (Flutter Challenges) دنبال کرده باشی, متوجه شدی که فلاتر از اجزای مختلفی مثل Engine که به زبان C و C++ توسعه داده شده و Framework که به زبان Dart توسعه داده شده و … تشکیل شده.
توی این بخش با این اجزا اشنا میشیم و بعدش میایم سر وقت Framework و معماری لایه ایش رو بررسی میکنیم و با اجزای مختلفش آشنا میشیم.
البته کار به این آشنایی مختصر ختم نمیشه و قراره در ادامه دل و روده ی Framework رو بیرون بریزیم!!!
خب dart ui یه library هست که برای ارتباط بین Framework (دارت) و Engine (C , C++) توسعه داده شده. این قسمت قلب تپنده ی فلاتره و جایی هست که همه ی اتفاقات ریز درشت فریمورک از این جا شروع میشه.
به ریز ترین شکل ممکن (جوری که اصلن فکرش رو هم نمیکنی) قراره این Library و اجزای مختلفش بررسی کنیم ….
با انواع event هایی که از سمت Engine برای Framework فرستاده میشه, با Engine Layer های مختلف, با Canvas و Image ها و … به خوبی اشنا میشیم.
خب نکات زیادی اینجا نهفتس و نمیشه خیلی از رمز و راز ها رو توی این معرفی برملا کرد!!! پس بمونه برای دوره…
با مراحل مختلفی که یه فریم فلاتر طی میکنه تا در نهایت ما روی صفحه نمایش تصویرش رو ببنیم آشنا میشیم.
فریم چیه اصلن؟ توی دوره بهش پاسخ میدیم.
چنتا مرحله هست؟ 7 تا (این رو هم توی دوره میبینم)
تا حالا از WidgetsBinding استفاده کردی؟
مثلن ابتدای برنامت صداش زده باشی… یا یه جایی روش PostFrameCallback زده باشی یا …. ؟
خب خب خب
قراره با انواع Binding های فلاتر اشنا بشیم. فقط یه دونه Binding نداریم. هر لایه برای خودش یه دونه داره!!!
این Binding ها در واقع Framework رو به dart ui متصل میکنن.
ما مهمترین هاشون رو به دقت بررسی میکنیم:
در نهایت به یه درک خیلی عمیق و کاربردی ازشون میرسیم.
قراره درخت های مختلف فلاتر رو بتکونیم….
فلاتر چنتا درخت داره؟
3 تا ؟
آره. ولی یه دونه دیگه هم هست. Layer Tree
میزنیم به ریشه ی این 4 تا درخت. جوری که دیگه نکته ای باقی نمونه!!!
انوع ویجت هایی که میشناسی چیا هستن؟
غیر از اینا دیگه چی؟ InheritedWidget ؟
توی این دوره علاوه بر اینکه این ها رو خوب خوب بررسی میکنیم و به Life Cycle استیت فول ویجت به خوبی مسلط میشیم و همچنین حفاری عمیقی هم روی Inherited میزنیم, با انواع دیگه هم کار میکنیم و به خوبی یادشون میگیریم:
اگه تا الان برای ساخت یه ویجت خیلی خاص از CustomPainter استفاده میکردی, از الان به بعد قراره خیلی حرف ای بشی و ویجت هایی از نوع Render Object ها بزنی!!!
Element Tree رو میکروسکوپی نگاهش می کنیم.
خب به ازای هر ویجت توی Widget Tree یه دونه Element توی Element Tree داریم. پس Element هایی مثل StatefulElement یا InheritedElement یا RenderObjectElement و … داریم که قراره حسابی بهشون نفوذ کنیم.
مفهوم Build Context رو بلدی؟
من نمیدونم بلدی یا نه. ولی اینجا یه جور دیگه از خجالتش در میایم.
این که مکان ویجت توی درخته و این حرفا رو من حالیم نمیشه!!! باید با تمام وجودمون درکش کنیم. والا با حفظ کردن تعریف که نمیشه برنامه نویسی کرد. امتحان دین زندگی که نمخوایم بدیم. باید درکش کنیم!!!
مفهوم انواع Key ها توی فلاتر و کاربردشون رو به خوبی درک نکزدی؟
خب اینجا این موضوع رو هم با هم دیگه حلش میکنیم.
مواردی مثل GlobalKey و Localkey رو با کاربردهای مهموشن بررسی میکینم….
این دو تا درخت مربوط به بخش Rendering داستان هستن. مفاهیم زیادی اینجا نهفتس و حرفاس زیادی برای گفتن داریم که نمیتونم توی چند خط خلاصش کنم.
قراره با Layout Protocol و Paint Protocol اشنا بشیم.
قراره Render Object های مختلف یعنی RenderBox ها و RenderSliver ها رو بررسی کنیم و نحوه ی توسعه دادن یه RenderObject اختصاصی رو یاد بگیریم.
تا حالا برات سوال نشده که ویجت های فلاتر چطوری سایز دهی میشن؟ مثلن یه ویجتی رو بهش سایز نمیدی, ولی دست آخر یه سایزی میگیره!!! اینجا نحوه ی سایز گرفتن ویجت ها رو یاد میگیریم….
اینجا نکات زیادی در مورد Paint شدن ویجت یاد میگیریم. تا حالا با Repaint boundary برخورد داشتی؟ اینجا خوب از خجالتش در میایم و مفهومی یادش میگیریم…
وای که چه بخش جذابیه!!!
Render Object Widget به دو دسته ی کلی تقسیم میشن و این تقسیم بندی براساس Render Object ای هست که این ویجت ها ازش استفاده میکنن. به این ترتیب ما دو دسته ی کلی از Render Object ها رو داریم:
قراره با این ها اشنا بشیم. البته RenderBox رو خیلی خوب و ریز بررسی میکنیم و خیلی وارد جزییات RenderSliver ها نمیشیم.
آخ آخ اخ
مفاهیم Animation ها رو یه جوری یاد میگریم که نگم برات!!!
با مفاهیمی مثل ChangeNotifier و … به خوبی اشنا میشیم.
خود Animation ها رو که Deep Dive میزنیم اساسی.
با AnimationController و Tween ها و Curve ها در حد تیم ملی آشنا میشیم.
خب دیگه ریزه کاری ها بمونه برای دوره!!! ولی قراره انیمشن رو با گوشت و پوست و استخون درک کنیم.
تازه کار به اینجا ختم نمیشه و ترکیب بعضی هاشون با هم دیگه رو هم میبینم. مثلن ترکیب Composite با Visitor. چه شووووووودددد!!!!
با درک Recursive Function مشکل داری؟
اینجا یه مکان مناسبه که به طور کاربردی یادش بگیریم…
پیش نیاز این دوره اینه که دارت و فلاتر رو بلد باشی. هر چه بیشتر بلد باشی بهتر. توی هر سطخی که باشی, اینجا چند لول ارتقا پیدا میکنی.
بله, در گروه پشتیبانی دوره عضو میشید و میتونید سوالاتتون رو بپرسید.
هزینه ی این دوره نسبت به سطح محتوایی که قراره آموزش داده بشه, فوق العاده پایین هست. دوره های معمولی فلاتر که داخلش ویجت ها و ارتباط با سرور و نهایتن یه استیت منیجمنت آموزش میدن, حدود 4 تا 5 میلیون تومن قیمت دارن.
پس قیمت این دوره پیشرفته و با سطح مطالب بالا کاملن معقوله.
توی این دوره قرار نیست داکیومنت فلاتر رو برات ترجمه کنم. چرا که اگه میخواستم این کار رو انجام بدم, میگفتم خودت داکیومنت رو بخونی!!!
همچنین این دوره کپی شده از هیچ دوره ی ایرانی یا خارجی, یوتیوب یا هر پلتفرم دیگه ای نیست!!!
منبع محتوای دوره, دقیقن خود فلاتره. خود خود فلاتر… + تجریه و دانش دیزاین پترن ها و …
و اما سرفصل های کلی دوره به صورت زیر هست. قرار نیست دونه دونه و به ترتیب این ها رو بررسی کنیم, چون که پیوستگی خیلی زیادی به هم دارن و اینها مواردی هستن که در طول دوره سراغشون میایم:
✅Flutter Architecture
✅Dart UI
✔️Flutter Window
✔️Platform Dispatcher
✔️Engine Layers
✔️Canvas
✔️Picture
✔️…
✅Scheduler Binding
✔️Frames
✅Animations
✅Rendering
✔️Render Tree
✔️Layer Tree
✔️Layout and Painting
✔️Render Object
✔️Render Box
✔️Box Protocol
✔️Repaint Boundary
✔️Pipeline Owner
✔️Renederer Binding
✔️Proxy Boxes and Shifted Boxes
✔️….
✅Element Tree and Widget Tree
✔️Element Tree
✔️Build Context
✔️Keys
✔️Build Owner
✔️Widget Binding
✔️Life Cycle
✔️Inherited Widget
✔️Parent Data Widget
✔️Stateful Widget Lifecycle
✔️Render Object Widget
✔️….
✅Design Patterns
✔️Composite
✔️Factory
✔️Decorator
✔️Visitor
✔️…
✅Recursive Function
✅
قوانین ثبت دیدگاه