مهدی نعمتی

مهدی نعمتی

سینگلتون در فلاتر به زبان ساده

همه تو برنامه نویسی از مفاهیم د یزاین پترن استفاده میکنن، چه به صورت آگاهانه چه غیر آگاهانه مثلا ازث بری و چند ریختی و ... ولی از بین همه این دیزاین پترن ها singleton به نظر بیشتر از بقیه مورد استفاده قرار میگیره، چون اکثر برنامه نویس ها نیاز به متغیر های سراسری رو حتما موقع کد زدن حس کردن. یه توضییح کلی بخوایم در مورد سینگلتون بدیم اینجوریه که یه متغیری نیازه که همیشه تو کل برنامه در دسترس باشه یا اصلا به جای متغیر نیاز که یه کلاس تو همه قسمت ها در دسترس باشه، اینجاست که دیزاین پترن سینگلتون خودش رو نشون میده. یه کلاس میسازیم به اسم test به این شکل : مرحله بعدی این که بیایم کلاس رو فراخونی کنیم و بهش مقداری رو بدیم، یه اسکرین جدید میسازیم و این کلاس رو فراخونی میکنیم و بهش مقدار مورد نظرمون رو میدیم خروجی کار ما به این شکل میشه: Car singleton has been creaed, this method call only once original car wheels : 4 edited car wheels : 8 حالا میایم یه صفحه (اسکرین) جدید میسازیم و دوباره کلاس سینگلتون رو فراخونی مکنیم که خروجی اسکرین دوم به این شکله: این یه مثال ساده و کاربردی از کلیت دیزاین پترن سینگلتون بود، ولی تو فلاتر میشه خیلی بهتر و با قدرت بیشتری از این قابلیت ها استفاده کرد که برای این کاار استیت منیجمت های مثل پرووایدر یا بلاک و ... هستند که واقعا کار برنامه نویسی و مدیریت دیتا رو ساده تر میکنن.

مهدی نعمتی

مهدی نعمتی

معرفی ویجت row در فلاتر

یکی از ویجت های پر استفاده در فلاتر ویجت row هست که باعث میشه چندتا ویجت رو به صورت افقی و کنار هم تو صفحه داشته باشیم. این ویجت تا جایی که صفحه دستگاه اجازه بده، میزاره که داخلش ویجت قرار بگیره. بعضی از مواقع پیش میاد که تعداد ویجت های داخل row از عرض صفحه هم بیشتر بشه که با ارور زرد رنگی مواجه میشیم که میگه جا نیست که همه المان ها تو صفحه جا بشن، یا اینکه ما نیاز داریم یه لیست افقی تو صفحه داشته باشیم که کاربرامون بتونن چیزی رو اسکرول کنن، تو این حالت ما میتونیم ویجت row رو داخل یه ویجت SingleChildScrollView قرار بدیم تا امکان اسکرول کردن لیست رو وقتی از عرض صفحه بیشتر شد داشته باشیم. تصویر زیر نشون میده که عرض ویجت از عرض تعریف شده بیشتر شده و خطای کم بودن فضا به صورت رنگ زرد تو سمت چپ داره نشون میده. تعیین نوع چینش ویجت های درون Row : سه تا پروپرتی خیلی مهم تو ویجت row داریم که تو ادامه کار بهشون توضیح میدیم پراپرتی MainAxisAlignment : این پراپرتی جهت افقی فرزندان(ویجت های داخل row) را مشخص میکنه به این شکل میشه مشخص کرد فرزندان ویجت Row تو اول ، وسط ، انتها یا با فاصله از هم تو صفحه قرار بگیرند. پراپرتی CrossAxisAlignment : این پراپرتی هم برای تعیین جهت قرارگیری بچه های داخل ویجت row به صورت عمودی تو صفحه به عهده داره و این امکان رو میده که تعیین کنیم که این بچه ها در اول، وسط یا انتهای ویجت قرار بگیرند. پراپرتی MainAxisSize : این پراپرتی مشخص میکنه که ویجت row تا چه اندازه تو صفحه کشیده بشه، یعنی اگه اندازه آیتم های تو صفحه حتی کمتر از عرض صفحه هم بود، اندازه ویجت row به اندازه عرض صفحه بشه.

مهدی نعمتی

مهدی نعمتی

معرفی ویجت Column در فلاتر

ویجت column یکی از پر استفاده ترین ویجت ها تو فلاتر هست که برای چینش ویجت های دیگه به صورت عمودی استفاده میشه این ویجت تا جایی که صفحه نمایش دستگاه اجازه بده این امکان رو میده که عناصر مختلف رو داخلش قرار بدین و اگه نیاز باشه ویجت های بیشتری رو هم تو این ویجت قرار بدیم باید اسکرول رو هم به این ویجت اضافه کنیم. برای اینکه اماکن اسکرول کردن رو یه ویجتی بدیم SingleChildScrollView استفاده میکینم که اگه محتوای داخل column از ظرفیتش بیشتر بشه بقیه المانهای ما به صورت اسکرول قابل نمایش باشه. زمانی که المان های داخل column بیشتر از ظرفیت باشه و اسکرول هم نداشته باشه با چنین خطایی رو به رو میشیم داخل این ویجت سه ابزار خیلی مهم قرار داره که باهاش میشه کارای کنترلی رو انجام داد پراپرتی MainAxisAlignment : این پراپرتی وضعیت عمودی children (آیتم های داخل) را در این ویجت مشخص میکند به این شکل که میشه تعیین کرد آیتم ها در بالای صفحه، وسط، پایین صفحه یا با فاصله برابر از یکدیگر تو صفحه چیده بشن. پراپرتی CrossAxisAlignment : این پراپرتی هم برای تعیین جهت قرارگیری children به صورت افقی تو صفحه هست و تعیین میکنه که آیتم ها در اول، وسط یا انتهای قرار بگیرند . پراپرتی MainAxisSize : این پراپرتی مشخص میکنه که ویجت column تا چه اندازه تو صفحه کشیده بشه، یعنی اگه اندازه آیتم های تو صفحه حتی کمتر از سایز صفحه هم بود، اندازه ویجت column به اندازه سایز صفحه بشه.