در سالهای اخیر، محبوبیت اپلیکیشنهای موبایل بیشتر و بیشتر شده است. طیفی از افراد را به برنامه نویسی این اپلیکیشنها علاقهمند کرده است. خوشبختانه ابزارهای برنامه نویسی بسیاری در دسترس توسعه دهندگانی است که میخواهند اپلیکیشنهای تلفنهای همراه را بسازند. در میان این ابزارها فلاتر (Flutter) وجود دارد که اخیراً خود را از رقیبانش متمایز کرده است.
فلاتر (Flutter) چیست ؟
فلاتر یک کیت توسعه نرمافزار UI منبع باز است که توسط گوگل ایجاد شده است. برای توسعه اپلیکیشنهای اندروید (Android)، ios، لینوکس(Linux)، ویندوز و وب از یک پایگاه کد استفاده میشود. اولین نسخه fluttetr با نام (Sky) شناخته میشد که روی سیستم عامل اندروید اجرا شد. به بیان ساده، فلاتر به شما این امکان را میدهد که یک اپلیکیشن تلفن همراه فقط با یک پایگاه کد ایجاد کنید. این بدان معناست که شما میتوانید از یک زبان برنامه نویسی و یک کد برای ایجاد دو برنامه مختلف برای اندروید و ios استفاده کنید(Cross platform). دلیل اینکه گوگل fluttetr را ساخت این بود که کار توسعه دهندگان را آسانتر کند تا بهترین برنامههای ممکن را بسازند. از توسعه دهندگان برنامهها انتظار میرود ویژگیهای جدیدی برای برنامهها ایجاد کنند که سرعت و عملکرد برنامه را به خطر نیاندازد.
دقت کنید که fluttetr یک زبان برنامه نویسی نیست، بلکه یک فریمورک میباشد. برای توسعه فلاتر، از یک زبان برنامه نویسی به نام دارت (Dart) استفاده میشود. این زبان در اکتبر ۲۰۱۱ توسط گوگل ایجاد شد. اما در طی سالهای گذشته بسیار پیشرفت کرده است. دارت بر روی توسعه front-end تمرکز دارد و شما میتوانید از آن برای ایجاد برنامههای موبایل و وب استفاده کنید. همچنین برای توسعه اندروید از زبانهای برنامه نویسی جاوا و کاتلین (Java / Kotlin) نیز استفاده میشود.
علاوه بر زبان برنامه نویسی دارت، از (c++) نیز در فلاتر استفاده میشود. اما به یاد داشته باشید که دارت و fluttetr به شما کمک میکنند تجربههای شگفتانگیزی را در ios، اندروید و وب ایجاد کنید. با توجه به اهمیت فلاتر در توسعه موبایل و وب، ترکیب fluttetr و دارت یک گزینه عالی در این زمینه است.
Flutter – نحوه کار کردن آن
ویجتها
ایده اصلی پشت فلاتر استفاده از ویجتها است. با ترکیب ویجتها توسعهدهندگان میتوانند کل رابط کاربری را بسازند. هر یک از این ویجتها یک عنصر ساختاری( مانند یک دکمه یا منو)، استایلها( مانند قلم یا رنگ)، طرحبندی layout( مانند padding) و بسیاری دیگر را تعیین میکنند.
توجه داشته باشید که فلاتر از ویجتهای OEM استفاده نمیکند، اما به توسعهدهندگان ویجتهای آماده خود را که شبیه به کامپوننتهای اندروید یا ios است(بر اساس متریال دیزاین یا Cupretino) را ارائه میدهد.
فلاتر همچنین نماهایی به سبک واکنشگرا به توسعهدهندگان میدهد. فلاتر از دارت استفاده میکند تا از مشکلات عملکرد ناشی از استفاده از یک زبان برنامهنویسی کامپایل شده به عنوان پل javaScript، جلوگیری کند. فلاتر دارت را به صورت AOT( ahead of time) به کد native برای چند پلتفرم کامپایل میکند.
به این ترتیب فلاتر میتواند بدون نیاز به پل جاوا اسکیپت که باعث ایجاد تعویض context بین کد جاوااسکیپت و native میشود، با پلتفرم ارتباط برقرار میکند. همانطور که میتوانید تصور کنید کامپایل کردن به کد native باعث افزایش زمان راهاندازی برنامه میشود.
اکنون، Flutter تنها SDK موبایل است که بدون نیاز به پل جاوااسکریپت نماهای واکنشگرا را ارئه میدهد. به همین دلیل است که بسیاری از توسعهدهندگان موبایل آن را در پروژههای خود امتحان کردهاند.
در ادامه برخی دیگر از مزایای توسعه نرمافزار موبایل با Flutter آورده شده است.
زبان برنامه نویسی دارت
یکی از جالبترین ویژگیهای فلاتر زبانی است که از آن استفاده میکند، یعنی دارت. مانند سایر سیستمهای واکنشگرا فلاتر نیز view tree را برای هر فریم جدید تازه میکند. برای دستیابی به آن، Flutter اشیاء زیادی ایجاد میکند که ممکن است بیش از یک فریم زنده نمانند. دارت از generational garbage collection استفاده میکند، که ثابت شده برای این نوع سیستمها بسیار کار آمد است.
علاوه بر این، دارت دارای کامپایلر “tree shaking” است که فقط شامل کدی است که شما در برنامه خود نیاز دارید. حتی اگر فقط به یک یا دو ویجت نیاز دارید، میتوانید از کتابخانه بزرگ ویجتهای آن به صورت آزاد استفاده کنید.
و در آخر، دارت مخزن بستههای نرمافزاری برای گسترش قابلیتهای برنامه را ارائه کرده است. به عنوان مثال، چند بسته ارائه داده است که به دسترسی به Firebase کمک میکند تا توسعهدهندگان بتوانند برنامههای بدون سرور بسازند. همچنین بستههای دیگری برای دسترسی به Redux یا دسترسی به خدمات سختافزارهای پلتفرم مانند دوربین را آسان میکند.
Flutter باعث صرفه جویی در وقت و هزینه شما میشود
فلاتر ابزاری برای توسعه نرمافزار برای همه پلتفرمها(cross-platform) است، این بدان معنی است که توسعهدهندگان میتوانند از همان کد برای ساخت برنامه اندروید و ios استفاده کنند. توسعه cross-platform بهترین روش برای صرفهجویی در وقت و منابع در تمام مراحل است.
کارایی عالی
فلاتر به دو دلیل عملکرد فوقالعادهای را ارئه میدهد. اول استفاده از دارت است که به صورت native کامپایل میشود. دوم فلاتر ویجتهای خاص خود را دارد، بنابراین نیازی به دسترسی به کامپوننتهای اصلی ندارد. درنتیجه ارتباط کمتری بین برنامه و سیستمعامل وجود دارد. این دو ویژگی فلاتر اجرای سریع برنامه و مشکلات عملکردی کمتری را تضمین میکند.
توسعه سریع به لطف hot reload
فلاتر به دلیل hot reload مورد توجه بسیاری از توسعهدهندگان قرار گرفته است. Hot reload باعث میشود که که تغییرات اعمال شده در کد در شبیهسازها و سختافزارها فوراً اعمال شود. کد تغییر یافته در کمتر از یک ثانیه اعمال خواهد شد. در تمام مدت، برنامه در حال اجرا است و توسعهدهندگان نیازی به اتلاف وقت برای راه اندازی مجدد آن ندارند.
Hot reload باعث شده است که ایجاد Ui، افزودن ویژگی جدید و رفع اشکلات آسانتر شود. اگر برنامهای با خطا روبرو شود، میتوانید آن را برطرف کنید و سپس استفاده از برنامه را ادامه دهید، انگار که هرگز رخ نداده است. حتی اگر مجبور باشید کل برنامه را دوباره راهاندازی کنید، میتوانید مطمئن باشید که برنامه در کمترین زمان ممکن انجام میشود و روند توسعه را تسریع میکند.
کدام برنامه ها با فلاتر ساخته شدهاند؟
فلاتر ( flutter ) در دسامبر ۲۰۱۸ وارد بازار شد. اگرچه فلاتر یک چارچوب جدید است، اما با این وجود فضا و بازار صنعت را با موفقیت اشغال کرده است. در حال حاضر، علی بابا (Alibaba) و تنسنت (Tencent) از این سیستم عامل استفاده میکنند. گوگل حتی از فلاتر در توسعه برنامه (Google Ads) استفاده کرده است. در ادامه به برنامههای ابتکاری دیگری که با استفاده از فلاتر ساخته میشوند و نمونهای از توانایی آن برای ساخت برنامهها در دستههای مختلف اشاره میکنیم: (Reflectly app)، (eBay motors)، (Hamilton musical app) و …
علاوه بر برنامههای تلفن همراه، فلاتر از تولید محتوای وب ارائه شده با استفاده از فنآوریهای وب پشتیبانی میکند مثل: HTML ، CSS و JavaScript . همچنین fluttetr برای برنامههای موبایلی که میخواهند هم در اندروید و هم در ios اجرا شوند(Cross platform)، بهینه شده است. فلاتر برای برنامههای تعاملی که میخواهید در صفحات وب یا دسک تاپ خود اجرا کنید بسیار مناسب است. البته شما با فلاتر نمیتوانید یک سری از کارها را انجام دهید. مثلا شما نمیتوانید از فلاتر برای ساخت برنامه برای tvos ، watchOS، کارپلی(CarPlay) یا اندروید آتو (Android Auto) استفاده کنید. همچنین fluttetr محدویتهای زیادی در پشتیبانی از Wear OS دارد.
مزایا و معایب فلاتر چیست؟
یکی از بزرگترین مزایای fluttetr توسعه بین پلتفرمی است که توسعه دهندگان میتوانند همزمان برنامههای جذابی را در سیستم عاملهای ios و اندروید بسازند. علاوه بر این، برنامه نویسی فلاتر باعث صرفهجویی در وقت و هزینه بیشتری نسبت به توسعههای گذشته میشود. fluttetr دارای مزایای زیادی نسبت به رقباست. این مزایای ذاتی زبان برنامه نویسی و مجموعهای از ابزارهای توسعه است که به flutter اجازه میدهد تا مشکلات و معایبی را حل کند که سایر فناوریها از پس آن بر نمیآیند.
البته فلاتر معایبی نیز دارد که از جمله آنها این است که flutter فضای زیادی را اشغال میکند و بارگیری یا به روزرسانی آنها بیشتر طول میکشد. fluttetr با استفاده از کتابخانه خود تا حدودی طراحی مواد و مولفههای مخصوص ios و اندروید را تکرار میکند، اما کاملاً یکسان نیست.
چرا باید فلاتر را یاد بگیریم ؟
فلاتر توسط گوگل پشتیبانی میشود. همین جمله باعث میشود بدانیم که زبان دارت و fluttetr قرار است پیشرفتها و بروز رسانیهای زیادی داشته باشند. flutter تازه شروع به کار کرده و پیشبینی میشود پیشرفتهای زیادی داشته باشد. fluttetr هم خروجی iosو هم اندروید را به ما میدهد. این یعنی ما برنامهی (Cross platform) مینویسیم و میتوانیم اپلیکشین خود را در اختیار همگان قرار دهیم. این موضوع یعنی صرفهجویی در وقت و هزینه و بازدهی بالاتر. امیدوارم با این مقاله تا حدودی با فلاتر آشنا شده باشید.