فلاتر (Flutter) یک ابزار قدرتمند برای توسعه برنامههای کاربردی چند پلتفرمی است که روزبهروز به طرفدارانش افزوده میشود. در این مقاله از آسا به شما کمک میکنیم تا بهتر بفهمید فلاتر چیست و چرا باید از آن برای توسعه نرمافزار استفاده کنید. بنابراین اگر میخواهید با یک بار کدنویسی، نرمافزار خود را در چندين پلتفرم اجرا کنید، تا انتهای مطلب با ما همراه باشید.
فلاتر چیست؟
در روزگار گذشته، زبانهای C، جاوا، کاتلین و سوئیفت، زبانهای اصلی توسعه اپلیکیشن موبایل بودند. مهمترین چالش توسعه نرمافزار با این زبانها نیاز به ساخت دو برنامه جداگانه، یکی برای اندروید و دیگری برای iOS بود. نه تنها این، بلکه توسعهدهندگان در بهینهسازی اپلیکیشن برای ابعاد و نسبتهای مختلف صفحه نمایش با یک چالش جدی روبهرو بودند. همه اینها توسعه نرمافزار را زمانبر و هزینهبر میکرد و در نهایت هم اپلیکیشنها با باگهای گوناگونی در پلتفرمهای مختلف اجرا میشدند.
فلاتر و چندین فریمورک دیگر عرضه شدند تا این مشکل را حل کنند اما Flutter به لطف طیف گستردهای از ابزارها، APIها، کتابخانهها و داکیومنتها توانست خود را از بقیه متمایز کند. Flutter در حقیقت یک SDK تلفن همراه (کیت توسعه نرمافزار) است که سال ۲۰۱۷ توسط گوگل عرضه شد. فلاتر به توسعهدهندگان امکان استفاده از یک زبان برنامهنویسی واحد (دارت) برای توسعه برنامههای کاربردی در چندین پلتفرم و با ابعاد و نسبتهای مختلف صفحه نمایش را میدهد. البته هسته اصلی آن را ویجتها تشکیل میدهند که در ادامه بیشتر به آنها خواهیم پرداخت.
همانطور که گفته شد Flutter در حقیقت یک زبان برنامهنویسی نیست بلکه یک SDK ویجتمحور است که بسیاری آن را عنوان یک فریمورک هم میشناسند.
لایههای معماری در SDK فلاتر چیست؟
معماری فریمورک یا به شکل صحیحتر، SDK فلاتر کاملا پیشرفته است و مجموعه ابزار کاملی را برای توسعه و معماری نرمافزارها ارائه میدهد .این موتور طراحی گرافیکی، قطعات از پیشساخته به نام ویجتها را در اختیار توسعهکنندگان میگذارد تا با کنار هم قرار دادن آنها، بتوانند نرمافزار خود را تولید کنند. بیایید به بخشهای اصلی معماری Flutter و نحوه عملکرد آنها بپردازیم.
جاگذار فلاتر
لایه جاگذار (embedder) از یک زبان مخصوص پلتفرم مقصد (مانند جاوا یا Objective-C) استفاده میکند تا برنامههای توسعهیافته با Flutter بتوانند به طور یکپارچه روی سیستم عاملهای مختلف اجرا شوند. جاگذار به عنوان پلی بین کد ماشین بومی، پلتفرم موردنظر و موتور فلاتر عمل میکند تا سازگاری و اجرای روان برنامه ممکن شود.
موتور فلاتر
قلب فلاتر، موتور آن است که عمدتا به زبان c++ نوشته شده و همه عملکردهای اساسی برنامههای Flutter را به عهده دارد. به عبارت دیگر، موتور Flutter نیروگاهی است که تمام ویژگیهای اساسی آن مثل ایجاد گرافیک، تنظیم متن، مدیریت فایلها و فعالیتهای شبکه، پشتیبانی از قابلیت دسترسی، اجازه دادن به افزونهها و اجرا و کامپایل دارت را ممکن میسازد.
فریمورک فلاتر
در Flutter، اصطلاح «فریمورک» معمولا به مجموعهای از ابزارها، کتابخانهها و قابلیتهایی اطلاق میشود که این SDK را در اختیار توسعهدهندگان قرار میدهد. جادوی برنامهنویسی واکنشگرا در همین لایه اتفاق میافتد و ویجتها قابلیتهای خود را به نمایش میگذارند. لایه فریمورک فلاتر از زبان برنامهنویسی دارت استفاده میکند، بنابراین توسعهدهندگان برای استفاده از Flutter باید به این زبان مسلط باشند.
ویجتهای فلاتر کدامند؟
همانطور که گفتیم ویجتها، بلوکهای ساختمانی اساسی و ابزار اصلی ساخت رابط کاربری هستند. همه چیز در فلاتر، از دکمههای ساده و فیلدهای متنی تا طرحبندیها و انیمیشنهای پیچیده، بهعنوان یک ویجت نشان داده میشود.
طبیعتا ویجتهای متعددی برای انتخاب وجود دارد اما میتوانیم آنها را به ۱۴ گروه دستهبندی کنیم که هر کدام نقشهای مجزایی را در یک برنامه فلاتر ایفا میکنند.
- ویجتهای دسترسی: برای افزایش دسترسی به برنامه و کاربر پسندتر کردن آن
- ویجتهای انیمیشن: ایجاد پویایی با استفاده از ترکیب ویجتها و انمیمیشنها
- ویجتهای تصاویر و نمادها و عناصر بصری: برای مدیریت داراییهای بصری مانند تصاویر و نمادها
- ویجتهای Async: فعال کردن عملیات ناهمگام در نرمافزار
- ویجتهای پایه: ویجتهای اساسی مورد نیاز برای توسعه نرمافزار
- ویجتهای کوپرتینویی: ویجتهای سبک و استایل مورد استفاده در ios
- ویجتهای متریال دیزاین: ویجتهای سبک و استایل مبتنی بر متریال دیزاین گوگل
- ویجتهای ورودی: برای مدیریت ورودی کاربر در نرمافزار
- ویجتهای تعامل: برای مدیریت رویدادهای لمسی و پیمایش بین نماهای مختلف در نرمافزار
- ویجتهای چیدمان: برای کمک به چیدمان و ترتیب دادن سایر ویجتهای روی صفحه
- ویجتهای رنگ و افکت: برای اعمال تغییرات بصری بر ویجتهای فرزند بدون تغییر طرح یا شکل آنها
- ویجتهای پیمایشی: بهطور پیشفرض قابلیت پیمایش را به سایر ویجتهای غیرقابل پیمایش اضافه میکند
- ویجتهای استایلینگ: مدیریت تم، پاسخگویی و اندازه برنامه را ممکن میکند
- ویجت متن: برای نمایش متون
ویجتهای فلاتر در دو دسته کلی به نام ویجتهای حالتدار و ویجتهای بدون حالت جای میگیرند که در ادامه آنها را توضیح خواهیم داد.
ویجتهای بدون حالت و حالتدار
دو مفهوم مهم در مورد ویجتهای Flutter وجود دارد که هدف و زمان استفاده از آنها را تعیین میکند: ویجتهای حالتدار یا حالتپذیر (Stateful) و ویجتهای بدون حالت یا حالتناپذیر (Stateless). به عبارت ساده، ویجتهای بدون حالت ویجتهایی هستند که نمیتواند ظاهر خود را تغییر دهند و زمانی استفاده میشوند که رابط کاربری بر دادهها و ظاهر ثابت آنها متکی باشد. لوگو، متنهای اصلی و تصاویر میتوانند در دسته همین ویجتها قرار بگیرند.
در سمت مقابل ویجتهای حالتپذیر را داریم که میتوانند ظاهر خود را برای نمایش اطلاعات جدید تغییر دهند. هنگامی که وضعیت یک ویجت حالتپذیر تغییر میکند، متد setState() را برای بازسازی رابط کاربری خود فرا میخواند. ویجتهای حالتدار در تولید محتوای پویا مانند ویژگیهای تعاملی، انیمیشنها و فرمهای سودمند، مورد استفاده قرار میگیرند.
مزایای فلاتر چیست؟
برای اینکه قدرت فلاتر را بهتر درک کنید باید بدانید که نرمافزارهایی مثل گوگل پلی، گوگل ادز، علی بابا، Realtor و بسیاری از نرمافزارهای معروف دیگر با فلاتر توسعه یافتهاند. اما فلاتر چه مزایایی دارد که باعث شده تا این حد محبوب باشد؟ بیایید چند مورد را بررسی کنیم.
- یک کد برای پلتفرمهای مختلف: با فلاتر میتوانید یک بار کد بنویسید و آن را برای چندین پلتفرم از جمله اندروید، iOS، وب و دسکتاپ استفاده کنید. این امر زمان و تلاش لازم برای توسعه را کاهش میدهد، زیرا نیازی به کدهای جداگانه برای هر پلتفرم نیست.
- ویژگی Hot Reloaded: این ویژگی Flutter به توسعهدهندگان امکان مشاهده در لحظه نتایج و تغییرات برنامه در حال اجرا را خواهد داد که باعث میشود روند توسعه، آزمایش و رفع اشکالات سریع شود.
- رابط کاربری پویا بر پایه ویجت: این فریمورک دارای مجموعهای غنی از ویجتهای از پیش طراحی شده است که به توسعهدهندگان اجازه میدهد تا رابطهای کاربری منعطف و پویا ایجاد کنند.
- عملکرد خوب: Flutter کاملا با معماری ARM سازگار است و همین موضوع سبب میشود که برنامهها در iOS و Android به خوبی اجرا شوند.
- اکوسیستم غنی: Flutter دارای اکوسیستمی غنی از بستهها، پلاگینها و کتابخانهها است که توسعهدهندگان میتوانند از آنها برای گسترش عملکرد برنامههای خود استفاده کنند.
- پشتیبانی قوی از طرف گوگل: همانطور که در ابتدا گفته شد، این فریمورک توسط گوگل عرضه شده و همین برای اطمینان از پشتیبانی همیشگی و قدرتمند فلاتر کافی است.
- سازگاری با طیف وسیعی از IDEها: فلاتر با IDEهای محبوب مانند Visual Studio Code، Android Studio و IntelliJ IDEA سازگار است که انعطافپذیری خوبی را در اختیار توسعهدهندگان قرار میدهد.
معایب فلاتر چیست؟
علیرغم مزایای فراوان، فلاتر معایبی دارد که بهتر است قبل از استفاده در نظر بگیرید.
- تعداد محدود کتابخانههای شخص ثالث: با وجود مجموعهای غنی از ویجتها، هنوز کمبود کتابخانههای شخص ثالث (Third-party) وجود دارد.
- ابزار اختصاصی Flutter هنوز به خوبی پلتفرمهای دیگر نیست: ابزار Flutter (ابزارهایی که توسعهدهندگان برای ایجاد برنامهها استفاده میکنند) هنوز به اندازه پلتفرمهای دیگر، مانند Swift در Xcode، بالغ یا قوی نیست.
- دارت یک زبان برنامهنویسی پرکاربرد نیست: دارت در مقایسه با زبانهای بالغ مانند جاوا، نسبتا جدید است. این بدان معناست که شاید تعداد محدودی از توسعهدهندگان با آن آشنا باشند و بتوانند با آن کار کنند.
- حجم بیشتر نرمافزار: نرمافزارهای توسعه یافته با استفاده از Flutter نسبت به سایر فریمورکها بزرگتر هستند.
چگونه یک توسعهدهنده فلاتر شویم؟ (road map)
نگران منابع یادگیری نباشید، یوتیوب و گیتهاب پر از نمونه کدها، نرمافزارهای توسعهیافته با Flutter و سورس کد هستند. پس بیایید ابتدا در مورد مسیر یادگیری فلاتر صحبت کنیم. برای تسلط بر توسعه فلاتر باید این مهارتها را بیاموزید:
آشنایی با اصول برنامهنویسی
مسلما همه توسعهدهندگان نرمافزار باید به اصول برنامهنویسی مسلط باشند، بنابراین اگر تا به حال کدنویسی نکردهاید باید یک زبان برنامهنویسی مناسب برای مبتدیان را انتخاب کنید. زبانهای برنامهنویسی که برای مبتدیان مناسب هستند عبارتند از پایتون، جاوا و جاوا اسکریپت. برای شروع میتوانید پایتون را انتخاب کنید که فوقالعاده ساده اما قدرتمند است. زبان c هم گزینه پیشنهادی دیگر ماست که از لحاظ سینتکس به دارت (زبان مورد استفاده در فلاتر) نزدیک است.
یادگیری برنامهنویسی با دارت
دارت زبان مورد استفاده در لایه فریمورک فلاتر است که به شما کمک میکند عملکرد برنامههای خود را بهبود ببخشید. بدون تسلط به دارت نمیتوانید از پتانسیلهای اصلی فلاتر در توسعه نرمافزار بهره ببرید، بنابراین حتی اگر یک برنامهنویس حرفهای هستید، زمانی را برای تسلط کامل بر دارت اختصاص دهید.
تسلط بر معماری فلاتر
با معماری فلاتر و نحوه اجرای برنامهها در پشت صحنه آشنا شوید. در مرحله بعد باید با ویجتهای Flutter، کاربرد هر کدام و نحوه استفاده از آنها آشنا شوید. در نهایت باید تفاوت ویجتهای حالتدار و بدون حالت فلاتر را یاد بگیرید و موارد استفاده مناسب از هر کدام را تمرین کنید.
توسعه UI با استفاده از فلاتر
وقتی اصول را یاد گرفتید، وقت آن است که دست به کار شوید. از امتحان کردن نترسید و همه چیز را امتحان کنید، این به شما کمک میکند تا نحوه کار ویجتها را کاملا یاد بگیرید. رابطهای کاربری توسعه یافته توسط شما ممکن است تا هفتهها ناامید کننده باشند، اما زمانی که لبخند رضایت به لبتان نشست، یک قدم پیش بروید و با ساختن و طراحی رابط کاربری ریسپانسیو از ویجتهای حالتپذیر و ویجتهای حالتناپذیر استفاده کنید.
ساخت پروژههای مختلف
پروژههای مختلف را شروع کنید و ویژگیهای مختلف را در آنها بگنجانید. برای شروع میتوانید برنامههای موردعلاقه خود را شبیهسازی کنید. به مرور باید چالشهای مختلف را امتحان کنید و به یاد داشته باشید که یادگیری مبتنی بر پروژه، بهترین راه برای تسلط بر توسعه نرمافزار است.
به انجمنهای فلاتر بپیوندید
انجمن فلاتر مملو از افراد مشتاق است که آماده کمک، مشارکت و کار به عنوان تیم Flutter هستند. سوالات خود را بپرسید، به توسعه فلاتر کمک کنید و رویدادها و فرصتهای همکاری را از دست ندهید. در نهایت سعی کنید نرمافزارهای خود را در پلتفرمهای رسانههای اجتماعی نمایش دهید تا مورد توجه افرادی قرار گیرد که به دنبال توسعهدهندگان فلاتر هستند.
سخن آخر
فلاتر به شما کمک میکند تا با استفاده از یک زبان برنامهنویسی و بدون کدنویسی مجزا برای هر پلتفرم، نرمافزارهای خود را توسعه دهید. بدون شک فلاتر از بهترین SDKها یا همان فریمورکهای چند پلتفرمی است که میتواند به شما در ایجاد برنامههای سازگار با گوشیهای هوشمند مختلف کمک کند. هر چیزی که برای شروع نیاز بود را به شما گفتیم، بنابراین اگر فکر میکنید Flutter برای شما مناسب است شروع کنید!
منابع:
دیدگاهتان را بنویسید