فریم ورک flutter چیست و چه کاربردهایی دارد؟

دسته بندی: برنامه نویسی
سطح مقاله: ساده
زمان مطالعه: 8 دقیقه
۰۱ آبان ۱۳۹۸
فارسی
فلاتر
English
Flutter

Flutter یک فریم ورک متن باز برای ساخت اپلیکیشن‌های موبایل است. این کتابخانه توسط شرکت گوگل در سال 2017 معرفی شد و در مقایسه با React یا سایر فریم ورک‌های ساخت اپلیکیشن مبتنی بر موبایل عمر زیادی ندارد. فلاتر با زبان برنامه نویسی دارت نوشته شده است، یک زبان چندمنظوره و شی گراء که هنوز آنطور که باید و شاید بر سر زبان‌ها نیفتاده و محبوبیت زیادی ندارد. با یادگیری زبان دارت و فریم ورک فلاتر می‌توانید برای اندروید و iOS اپلیکیشن بسازید. جالب است بدانید علی بابا، یکی از بزرگترین شرکت‌های چینی در دنیا به فلاتر اعتماد کرده و اپلیکیشن خود را با این فریم ورک ساخته است. در این مطلب بررسی خواهیم کرد که فریم ورک Flutter چیست و چه کاربردهایی دارد.

می‌دانیم که زبان اصلی برنامه نویسی اندروید، جاوا است و برنامه نویسان iOS هم از Swift برای توسعه اپلیکیشن‌های موبایلی استفاده می‌کنند. جاوا پیچیدگی‌های خاص خودش را دارد و شاید کار با آن به اندازه زبان‌هایی مثل پایتون یا جاوا اسکریپت راحت نباشد. همین مساله باعث شده که سایر زبان‌ها هم برای توسعه برنامه‌های موبایلی به کار گرفته شوند. مثلا React یک راه حل نسبتا آسان برای ساخت اپلیکیشن‌های موبایل مبتنی بر جاوا اسکریپت است. یا فلاتر که یک پیاده‌سازی خوب از زبان دارت است.

به نظر می‌رسد گوگل می‌خواهد سرویس‌های مختلف خود را به هم مرتبط کند و عطش این شرکت برای برای تصاحب بازارهای مختلف تمامی ندارد. گوگل بعد از اندروید و موفقیت بی سابقه آن روی یک پلتفرم جدید به نام Fuchsia کار می‌کند. یک سیستم عامل جدید که برخلاف اندروید مبتنی بر هسته لینوکس نیست و از یک ریزهسته جدید به نام Zircon استفاده می‌کند. همینطور زبان دارت و یک فریم ورک به نام Flutter که قرار بود پلی برای ورود برنامه‌های موبایل به سیستم عامل جدید گوگل یعنی Fuchsia باشد را معرفی کرد.

فهرست محتوای این مقاله

بررسی معماری فریم ورک Flutter

معماری فریم ورک فلاتر به چه شکل است

  • پلتفرم دارت: هسته اصلی فلاتر را زبان دارت تشکیل می‌دهد. اما گوگل برای توسعه سرویس خود و اضافه کردن قابلیت‌های جدید، از زبان‌های دیگر هم استفاده کرده است.
  • موتور فلاتر: به زبان C++ نوشته شده و به کمک کتابخانه گرافیکی Skia گوگل، این فریم ورک از رندرگیری سطح پایین (Low Level) پشتیبانی  می‌کند. این موتور کتابخانه‌های هسته فلاتر را به پروژه اضافه می‌کند. کتابخانه‌هایی مثل انیمیشن، گرافیک، فایل، ورودی و خروجی شبکه و غیره.
  • کتابخانه Foundation: کتابخانه فاندیشن که به زبان دارت نوشته شده است شامل تعدادی کلاس و تابع است و اجازه می‌دهد برنامه‌ها با فلاتر بسازید. مثلا برقرای ارتباط با موتور فلاتر به کمک APIها یک از این موارد است.
  • ابزارک‌های طراحی خاص: فلاتر از دو گروه ویجت استفاده می‌کند. یکی متریال دیزاین که همان زبان طراحی معروف گوگل است و یکی هم ویجت Cupertino که طراحی اپل را شبیه سازی می‌کند.

مزایای استفاده از فریم ورک فلاتر

در این قسمت، صرف نظر از اینکه رقبای فلاتر چه امکاناتی دارند و بدون مقایسه کردن این فریم ورک با آنها، به بررسی مزایای فلاتر پرداخته‌ایم.

  • بازدهی مناسب: با توجه به اینکه فلاتر Cross Platform است، می‌توانید با آن هم برای اندروید هم برای iOS اپلیکیشن بسازید. به این شکل هم در زمان و هم در هزینه‌های خود صرفه جویی خواهید کرد.
  • کدهای دارت بدون نیاز به مدل OEM به کدهای Native تبدیل می‌شوند. چون داخل فلاتر این مدل قرار دارد.
  • توسعه سریع و آسان: یکی از جذاب‌ترین قابلیت‌های فلاتر Hot Reload نام دارد. فرض کنید در محیط اندروید استدیو در حال ساخت اپلیکیشن هستید. برای تست برنامه خود آن را در یک شبیه‌ساز اجرا می‌کنید. بعد احساس می‌کنید که یک بخشی از کد نیاز به تغییر دارد، تغییر خود را اعمال کرده و می‌بینید که بدون نیاز به ریستارت کردن شبیه ساز تغییرات اعمال شده قابل مشاهده هستند. این تکنیک در تغییر UI، اضافه کردن قابلیت جدید و دیباگ کردن پروژه بسیار به برنامه نویس کمک می‌کند.
  • یادگیری فلاتر و کار با آن آسان است. اگر قبلا با زبان‌های شی گرا (OOP) کار کرده باشید، شروع کار خیلی آسان خواهد شد. حتی اگر هیچ شناختی روی زبان‌های برنامه نویسی ندارید، زبان دارت به خوبی توسط گوگل مستندسازی شده و یک زبان سطح بالا به حساب می‌آید. می‌توانید با دارت کار کرده و بعد وارد دنیای فلاتر شوید.
  • سازگاری: از آنجایی که ابزارهای مورد استفاده ما (Widgets) بخشی از برنامه ما حساب می‌شوند نه پلتفرم یا سیستم عاملی که روی آن اجرا می‌شوند، در فلاتر وابستگی زیادی به نوع سیستم عامل یا نسخه آن نداریم. این یعنی پروژه ما احتمالا روی نسخه‌های مختلف یک سیستم عامل به درستی اجرا می‌شود و کار ما در تست محصول سبک‌تر است.
  • هم فریم ورک فلاتر هم زبان برنامه نویسی دارت، اوپن سورس بوده و همچنین به طور رایگان ارائه می‌شوند. همینطور مستندسازی قدرتمند یادگیری آنها را آسان‌تر می‌کند. وجود انجمن‌های متنوع در ما این اعتماد را به وجود می‌آورد که برنامه نویسان زیادی هنگام وجود مشکل می‌توانند به ما کمک کنند.

چه چیزی مانع پیشرفت و استفاده همگانی از فلاتر شده است؟

یکی از دلایل این است که برنامه نویسان جاوا، کاتلین یا سویفت که قبلا به صورت native برای سیستم عامل خود کد می‌زدند حالا باید سراغ یک زبان جدید بروند. یعنی زبان دارت. حالا در کشور ما اگر یک شرکت برای توسعه اپلیکیشن خود با فلاتر بخواهد چند برنامه نویس دارت استخدام کند احتمالا با گزینه‌های محدود و افراد کمتری نسبت به سایر تکنولوژی‌ها مواجه می‌شود. چون این تکنولوژی نسبتا جدید است. هر چند از طرفی یادگیری یک زبان جدید و نسبتا آسان برای بیشتر برنامه نویسان چالش جدید و هیجان انگیزی به حساب می‌آید. چون یک برنامه نویس موفق کسی است که همیشه تشنه یادگیری و امتحان چیزهای جدیدتر است.

فرض کنید می‌خواهید یک بازی بزرگ مثل Clash of Clans بسازید، یا تصمیم دارید یک اپلیکیشن مالی با سرویس‌های متنوع طراحی کنید. شنیده‌اید که فلاتر انتخاب خوبی است و سراغ آن می‌روید. اما میانه راه متوجه خواهید شد که پیاده کردن بسیاری از مفاهیمی که مدنظر داشتید در این پلتفرم یا غیرممکن است یا بسیار سخت خواهد بود. در واقع Flutter انتخاب خوبی برای ساخت بازی‌های بزرگ یا اپلیکیشن‌های پیچیده نیست.

بسیاری از برنامه نویسان معتقدند که فلاتر هنوز قدرت لازم برای ساخت برنامه‌های بزرگ را ندارد و بهتر است در پروژه‌های ساده‌تر یا برای ساختن نمونه اولیه یک سرویس استفاده شود. همینطور جدید بودن فلاتر هم یکی از دلایل دودل شدن بسیاری از برنامه نویسان است. چرا باید زبان جاوا که چند دهه برای توسعه برنامه‌های اندرویدی استفاده شده را رها کرده و سراغ یک تکنولوژی با ثبات کمتر برویم؟

در دفاع از فلاتر باید بگوییم که جدید بودن یک ایراد نیست و باید به یک سرویس جدید که معرفی می‌شود فرصت داد تا خودش را نشان دهد. همینطور اگر چرخی در اینترنت بزنیم، می‌بینیم که پروژه‌های بسیار خوبی با این فریم ورک طراحی شده‌اند و این نظریه را که شاید فلاتر گزینه مناسبی برای توسعه محصولات بزرگ نباشد را زیرسوال برده‌اند.

محبوبیت فلاتر چقدر است؟

کدام اپلیکیشن‌ها با فلاتر طراحی شده اند

فقط یک ماه بعد از انتشار اولین نسخه پایدار از Flutter، تعداد 50 هزار ستاره برای این پروژه جدید گوگل در گیت هاب ثبت شد. همینطور در یک نظرسنجی آنلاین که توسط تیم تحقیقاتی فلاتر انجام شد، 93% شرکت‌کنندگان اعلام کردند که از این فریم ورک "بسیار راضی" و "راضی" هستند. این عدد نسبت به 92% که در جولای 2018 ثبت شده بود 1% بالاتر است.

بازار اصلی محصولات اندرویدی Google play store می‌باشد و اپل هم از مارکت اختصاصی خود به نام App Store استفاده می‌کند. در طول مقاله گفتیم که فلاتر خیلی محبوب نیست و حالا با آمار و ارقام آن را ثابت می‌کنیم. تا امروز 5% برنامه‌های منتشر شده در گوگل پلی و اپ استور با فلاتر ساخته شده‌اند. فلاتر هم برای iOS استفاده می‌شود هم برای Android و 81% برنامه نویسان پروژه‌های خود را برای هر دو پلتفرم منتشر کرده‌اند. اما در یک اقدام عجیب نزدیک به 12% برنامه‌ها فقط برای اندروید و 7% آنها فقط برای iOS ساخته شدند. به نظر می‌رسد این گروه از برنامه نویسان بیشتر در حال تست فلاتر بودند.

جمع بندی

در این مطلب بررسی کردیم که فلاتر چیست و چه کاربردی دارد. Flutter یک فریم ورک یا Moblie SDK متن باز و رایگان بوده که توسط شرکت گوگل در سال 2017 معرفی و عرضه شده است. فلاتر از زبان برنامه نویسی دارت قدرت گرفته و به برنامه نویسان کمک می‌کند با یک زبان واحد (دارت) برای اندروید و آی اواس اپلیکیشن بسازند. همانطور که آینده زبان دارت در هاله‌ای از ابهام قرار دارد، مشخص نیست فلاتر هم در آینده به چه سرنوشتی دچار شود. اما هنوز هم به خاطر مزایایی که دارد می‌تواند یک انتخاب ایده‌آل برای ساخت برنامه‌های ساده و متوسط موبایلی باشد. اگر با فلاتر کار کرده‌اید خوشحال می‌شویم تجربیات خود را با ما در سون لرن به اشتراک بگذارید.

چه امتیازی به این مقاله می دید؟
نویسنده محمد انوری
زندگی کردن در لحظه انقدر سخت است که بیشتر مردم ترجیح می‌دهند در حسرت گذشته و رویای آینده باقی بمانند. به نظر من رسیدن به خوشحالی فرمول پیچیده ای ندارد و فقط باید به تک بیت زیر پایبند بود: سعدیا دی رفت و فردا همچنان موجود نیست در میان این و آن ، فرصت شمار امروز را

نظرات کاربران

رضا فریدونی

سلام لطفا اگه میشه یه دوره خوب فلاتر برگزار کنید

کیوان علی محمدی

انشالله به زودی در آکادمی سون لرن

آیدین

سلام خسته نباشی دوره های آموزش دارت و فلاتر رو کی تو سایت قرار میدید؟؟

مرضیه

تشکر از مقاله خوبتون . البته الان در ایران هم اگهی استخدام برای فلاتر زیاد شده و تا اونجایی که تحقیق کردم فلاتر برای اپلیکیشنهایی مثل دیجی کالا یا دیوار خیلی خوب و به صرفه است و افرادی را میشناسم که در یک ماه این فریمورک را یادگرفته اند و الان دارن برای اندروید و ios برنامه مینویسن . اگر امکان داره یک دوره مجازی برای فلاتر برگزار کنید . ممنون

لقمان آوند

ممنون از ثبت دیدگاهتون
انشالله در برنامه خواهیم گذاشت

بصیر احمد

بسیار زیاد تشکر از بابت معلومات مفیدتان.

محمد انوری

سلام بصیر جان … خوشحالم دوست داشتی … موفق باشی …

حامد

خیلی ضعیف نوشتی، جمله بندی اشتباه زیاد داری
نتونستی حق کلام رو آنطور که شایسته بود، بیان کنی

محمد انوری

سلام دوست عزیز …
ممنونم بابت نقدی که داشتید … خوشحال میشم “جمله‌بندی‌های اشتباه” رو مشخص کنید تا به لطف خدا از این به بعد “حق مطلب” رو شایسته‌تر “اَدا” کنیم …
موفق باشید …

مصطفی قدیمی

سلام ممنونم از اینکه به این مطلب توجه کردی و مشکلاتش رو عنوان کردی

آیدین فرهمند

سلام
آفرین واقعا مقالات خوبی رو ارائه می کنید . اول از همه برای یادگیری اصول برنامه نویسی باید وقت گذاشت مانند مفاهیم ساختمان داده و طراحی الگوریتم ( البته این ابتدای راه است و صرفا به جهت درک عمیق شما از مباحث گراف و ساختمان داده ها می باشد و تمرین برای حل مسائل پیچیده ) ، بنابراین اسم زبان مهم نیست ، شما و درک شما از زبان مهم هستید .
راستش چیزی که در بازار فعلی ایران دیده میشه ( من در مورد بازار خارجی آشناییتی ندارم ) این هست که استارت آپ ها برای استارت اولیه پروژه از زبان هایی نظیر flutter استفاده می کنند ، دلیل چیست ؟ دلیل کوچکی شرکت و نیاز به سرمایه در حال گردش در کوتاه ترین زمان ممکن . اما سوال دیگری که در ادامه باید پرسید این هست که شرکت ها به توسعه زیر ساخت نرم افزاری محصول خود از همان زبان اولیه استفاده خواهند کرد ؟ جواب خیر است البته اگر استارت آپ هنوز به زندگی خود ادامه داده باشد و در این حالت است که برای گسترش پروژه نیاز به زبان های native دارند ( زبان native اصطلاحا به زبانی گفته میشود که توسط خالق آن سیستم عامل به صورت بهینه و مختص به آن ایجاد میشود ) .
به طور مثال اگر یک سایت برای جستجو در سایت خود از قابلیت ajax در کنار Php استفاده می کرده حال با گسترش business خود و درخواست فراوان در سمت سرور خود باید به زبان هایی نظیر nodjs حرکت کند و یا در برخی موارد اجبار به تعویض نوع پایگاه داده است .
حقیقتا در بازار امروزی ایران تنوع زبان های برنامه نویسی برای پلتفرم های اندروید و ios بیش از پیش شده اما هیچکس از آینده خبری ندارد . مثلا مقایسه ای که بین flutter و react native انجام میدهند این هست که گوگل احساس خطر کرده نسبت به react native بنابراین برای اینکه جلوی بازار react native را بگیرد مجبور به ارائه زبان flutter شده تا اولین realize از زبان kotline را ارائه دهد .
با این تفاسیر چه نتیجه ای می توان گرفت ؟ سیاست های اقتصادی هیچ یک از شرکت های انحصاری نظیر گوگل به نفع توسعه دهنده نبوده است بنابراین دانش خود را نسبت به مباحث پایه افزایش دهید .
شاید بتوان گفت تمامی زبان ها و با توجه به نوع پروژه نرم افزاری شبیه به هم هستند اما برنامه نویسی ، برنامه نویس است که از قابلیت های یک زبان به نحو احسنت مطلع و بهترین و پایه این ترین الگوریتم را چه در سمت کلاینت و چه در سمت سرور پیاده سازی کند .
معذرت خیلی زیاد شد و اشتیاق به اشتراک گذاشتن دانش دارم .

محمد انوری

ممنونم ازت آیدین جان …
خیلی توضیحات کامل و مفیدی نوشتی و خیلی خوشحالم که کاربری مثل شما اینقدر برای سون لرن وقت میزاره و یه کامنت پربار و باارزش ثبت می کنه …
توضیحاتتون عالی بودن … موفق باشی …

مجتبی

مقاله خیلی خوبی بود.
خسته نباشید.

محمد انوری

سلام مجتبی جان … خوشحالم که دوست داشتی …

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :