«آقا، آخرش چرا فریم ورک فلاتر؟ مزایای فلاتر چی هست؟» این احتمالاً سوالی بوده که یا از خودت پرسیدی، یا از هرکس که تو کار برنامهنویسی موبایل بوده شنیدی. تو بازاری که گزینههایی مثل React Native، نیتیو (جاوا/کاتلین و سوئیفت) و کلی چیز دیگه هست، چرا یهو فلاتر flutter مثل بمب صدا کرد و همهجا رو گرفت؟ مگه گوگل بیکار بود یه فریمورک دیگه درست کنه؟ چرا فلاتر واقعا؟
اگه تو هم بین این گزینهها گیر کردی، حس میکنی اطلاعات ضد و نقیض زیاده و نمیدونی کدوم مسیر رو انتخاب کنی، این مقاله دقیقاً برای خودته. من قرار نیست اینجا برات قصه بگم. میخوام خیلی خودمونی و فنی، ۵ دلیل مهم رو کالبدشکافی کنم که چرا یادگیری فلاتر نه تنها یه انتخاب خوب، که شاید هوشمندانهترین حرکت دوران حرفهای تو به عنوان یه توسعهدهنده باشه.
پس قهوهات رو بیار که میخوایم عمیق بشیم و ببینیم مزایای فلاتر چیه که اینجوری همه رو عاشق خودش کرده.
خصوصیات منحصر به فرد فریم ورک فلاتر
حقیقتش اینه که موبایلها دیگه رسماً بهمون چسبیدن و همهچیز رفته تو گوشی. این یعنی توسعه اپ موبایل یه کار فوقالعاده مهمه که میتونه به پروژههای خیلی خفن و موفق ختم بشه. واسه همین، فریمورکی که میخواد تو این بازی برنده باشه، باید یه سری قابلیت منحصربهفرد و شاخ تو چنته داشته باشه. حالا بیا دقیقاً همین قابلیتهای اصلی که فریمورک فلاتر رو انقدر سر زبونها انداخته، یکییکی کالبدشکافی کنیم.
اولین و سنگینترین دلیلی که چرا فریم ورک فلاتر رو باید جدی گرفت، بحث پرفورمنس و سرعته. ببین، تهش کاربر نهایی یه اپلیکیشن نرم، روون و سریع میخواد. اگه اپ تو لگ بزنه، موقع اسکرول تیک داشته باشه یا کند باز بشه، کاربر همون لحظه پاکش میکنه و میره سراغ رقیبت.
خیلی از فریمورکهای کراس-پلتفرم (مثل رقیب سنتی فلاتر که جلوتر بهش میرسیم) یه مشکل ذاتی دارن: اونها از یه چیزی به اسم «پل» یا Bridge جاوااسکریپت استفاده میکنن. یعنی کد تو (که با JS نوشتی) باید «ترجمه» بشه تا با اجزای نیتیو گوشی (دکمهها، لیستها و…) حرف بزنه. این ترجمه، هرچقدر هم بهینه باشه، باز هم یه سربار (Overhead) و گلوگاه ایجاد میکنه. این همونجاییه که حس میکنی اپ یه کم «جون نداره» یا اون حس «نیتیو» بودن رو نمیده.
جادوی فلاتر: حذف واسطهها
اما فلاتر این بازی رو از ریشه عوض کرد. گوگل گفت: «ما اصلاً به این پل نیازی نداریم!». فلاتر flutter کدهای دارت (Dart) تو رو مستقیماً به کدهای ماشین نیتیو (ARM یا x86) کامپایل میکنه. یعنی هیچ مترجمی این وسط نیست. کد تو داره مستقیم با CPU حرف میزنه. این اولین برد بزرگ فلاتر در زمینه پرفورمنسه.
راز دوم: فلاتر خودش نقاشه (داستان Skia و Impeller)
قدرت دوم فلاتر تو روش رندر کردن UI هست. فـلاتر به جای اینکه سعی کنه از دکمههای نیتیو خود اندروید یا iOS استفاده کنه، گفت «من خودم همهچیز رو از صفر تا صد نقاشی میکنم!».
تا همین چند وقت پیش، فلاتر این کار رو با استفاده از یه کتابخونه گرافیکی فوقالعاده قدرتمند به اسم Skia انجام میداد. (Skia همون موتوریه که توی گوگل کروم، اندروید و کلی غول دیگه داره کار میکنه). این یعنی دکمهای که تو توی فلاتر میسازی، چه روی یه اندروید قدیمی باشه چه روی آخرین نسخه iOS، دقیقاً یه شکل و یه جور عمل میکنه. این یعنی کنترل کامل و ۱۰۰ درصدی روی تکتک پیکسلهای صفحه.
اما Skia یه مشکل کوچولو داشت. اون «شیدرها» (Shader) یا همون دستورات گرافیکی رو موقع اجرا (Runtime) کامپایل میکرد. این باعث میشد اولین باری که یه انیمیشن پیچیده اجرا میشد، یه لگ یا «تیک» خیلی ریز (معروف به First-run Jank) رو ببینی.
گوگل که روی این چیزا وسواس داره، گفت «همینم نباید باشه!». این شد که تیم فلـاتر یه موتور رندر کاملاً جدید به اسم Impeller رو از صفر مخصوص فلاتر ساخت.
جادوی ایمپلر چیه؟ ایمپلر تمام اون شیدرها رو به جای لحظهی اجرا، موقع بیلد گرفتن اپ (Build Time) از قبل کامپایل میکنه. نتیجهاش اینه که اون «لگ اولین اجرا» کاملاً حذف شده. یعنی انیمیشنها از همون فریم اول، مثل کره نرم و روون اجرا میشن.
و خبر خوب: ایمپلر دیگه یه چیز «آزمایشی» یا «مخصوص iOS» نیست. از اواسط ۲۰۲۵، ایمپلر رسماً موتور رندر پیشفرض (Default) فـلاتر هم در iOS و هم در اندروید (روی اکثر دستگاههای مدرن) شده. Skia دیگه فقط به عنوان یه گزینه پشتیبان (Fallback) برای دستگاههای خیلی خیلی قدیمی اندرویدی استفاده میشه.
این یعنی پرفورمنس خالص و روون. همین تعهد گوگل به حل کردن عمیقترین مشکلات پرفورمنسی، یکی از بزرگترین مزایای فلاتر هست که رقبا فقط میتونن خوابش رو ببینن.
2. یک بار کد بزن، همهجا پادشاهی کن!
دومین دلیل که چرا فریم ورک فــلاتر اینقدر جذابه، برای هر فریلنسر یا مدیر تیمی، مثل یه رویاست. کابوس هر توسعهدهندهای اینه که یه ایده خفن داره، ولی باید دوتا تیم جداگونه استخدام کنه: یه تیم اندروید (کاتلین/جاوا) و یه تیم iOS (سوئیفت/Objective-C). این یعنی دو برابر هزینه، دو برابر زمان توسعه، دو برابر دردسر هماهنگی و دو برابر باگ.
اینجا فلـاتر وارد میشه و میگه: «نگران نباش، من هستم!». تو فقط یک بار کد میزنی (با زبان دارت) و در عوض، ۶ تا خروجی نیتیو میگیری! آره، درست شنیدی. منظورم فقط اندروید و iOS نیست. تو با همون کدبیس میتونی برای ویندوز، لینوکس، macOS و حتی وب (با کامپایل شدن به WebAssembly) خروجی بگیری.
این یعنی چی؟ یعنی تو به عنوان یه فریلنسر، میتونی یه پروژه رو قبول کنی و به مشتری بگی «من هم اپ اندروید بهت میدم، هم iOS، هم دسکتاپ». این یعنی ارزش پیشنهادی تو به عنوان برنامهنویس سر به فلک میکشه. برای یه استارتاپ، این یعنی میتونه با نصف هزینه و یکسوم زمان، محصولش رو به بازار برسونه.
این قابلیت «یک کدبیس برای همهجا» فقط یه شعار تبلیغاتی نیست؛ این هستهی مرکزی فلـاتره. به لطف اینکه فـلاتر خودش UI رو نقاشی میکنه (همون قضیه Skia)، براش فرقی نداره داره روی یه پیکسل ۵ میلیونی کد میزنه یا یه مانیتور ۳۲ اینچی. این قدرت واقعیه.
3. جادوی «Hot Reload» که معتادش میشی!
اگه تا حالا برنامهنویسی موبایل نیتیو (مخصوصاً اندروید) کار کرده باشی، این سناریو برات آشناست: یه تغییر کوچولو توی UI میدی (مثلاً رنگ یه دکمه رو از آبی به سبز تغییر میدی)، دکمه Build رو میزنی، و میری یه قهوه برای خودت میریزی و برمیگردی! پروسه بیلد گرفتن و نصب دوباره اپ روی شبیهساز یا گوشی، گاهی تا چند دقیقه طول میکشه. این یعنی اتلاف وقت وحشتناک و خارج شدن از «فاز» کدنویسی.
حالا بیا سراغ فلـاتر. اینجا ما یه چیزی داریم به اسم «Stateful Hot Reload». این قابلیت، برگ برنده فلـاتر در «تجربه توسعهدهنده» (Developer Experience) هست.
قضیه اینه: تو داری روی اپ کار میکنی و میخوای همون رنگ دکمه رو عوض کنی. کد رو تغییر میدی، Ctrl + S (ذخیره) رو میزنی و… بوم! در کمتر از یک ثانیه، تغییراتت رو روی گوشی یا شبیهساز میبینی.
نکته خفنش کجاست؟ اپ تو ریاستارت نمیشه! اگه تو ۵ مرحله توی اپ جلو رفته باشی، یه فرمی رو نصفه پر کرده باشی و بعد UI رو Hot Reload کنی، تو دقیقاً تو همون صفحه، با همون دیتای قبلی باقی میمونی. استیت (State) برنامه حفظ میشه. این یعنی میتونی با سرعت نور دیباگ کنی، UI بزنی و ایدههات رو تست کنی. این قابلیت بهتنهایی میتونه سرعت توسعه تو رو ۵ تا ۱۰ برابر بیشتر کنه. این یکی از اون مزایای فلاتر هست که تا خودت تجربهاش نکنی، عمق فاجعه (خوبش!) رو درک نمیکنی.
4. و اما نبرد قرن: فلاتر یا ری اکت نیتیو؟
خب، رسیدیم به سوال اصلی. خیلیها میگن «اوکی، کراس-پلتفرم خوبه، ولی فلـاتر یا ری اکت نیتیو (React Native)؟» بذار اینو یه بار برای همیشه حل کنیم.
اول از همه، احترام واجبه. ریاکت نیتیو (ساخته فیسبوک) فریمورک فوقالعادهایه، کلی اپلیکیشن خفن باهاش ساخته شده و چون از جاوااسکریپت و ریاکت استفاده میکنه، برای وبدولوپرها نقطه ورود خیلی راحتیه.
اما تفاوتهای اساسی وجود داره. همونطور که تو دلیل شماره ۱ گفتم، تفاوت اصلی در «چگونه» ساخته شدنه. ریاکت نیتیو از «پل» (Bridge) استفاده میکنه تا با کامپوننتهای نیتیو گوشی حرف بزنه. فلـاتر مستقیماً کامپایل میشه و خودش UI رو «نقاشی» میکنه.
این یعنی چی؟ تو ریاکت نیتیو، وقتی تو میگی «یه دکمه بساز»، ریاکت نیتیو میره به اندروید میگه «لطفاً دکمه نیتیو خودت رو بساز» و به iOS هم میگه «تو هم دکمه نیتیو خودت رو بساز». این باعث میشه اپ «حس» نیتیو بودن بده، چون واقعاً داره از کامپوننتهای نیتیو استفاده میکنه. اما مشکل اینجاست که اگه فردا اپل بیاد ظاهر دکمههاش رو تو آپدیت جدید عوض کنه، ممکنه اپ تو به هم بریزه. وابستگی به پلتفرم زیاده.
اما تو flutter، اون دکمه یه ویجت فـلاتریه که توسط Skia کشیده شده. براش مهم نیست اندروید ۱۲ یا ۱۳ باشه. اون دکمه همیشه همون شکلیه که تو گفتی. این یعنی «پایداری» و «پیشبینیپذیری» بینظیر.
تفاوت دوم، زبان برنامهنویسیه. ریاکت نیتیو از جاوااسکریپت استفاده میکنه. فـلـاتر از زبان اختصاصی گوگل یعنی «دارت» (Dart) استفاده میکنه. شاید بگی «ای بابا، یه زبان جدید دیگه هم یاد بگیریم؟». ولی صبر کن. دارت یه زبان مدرن، فوقالعاده تمیز، شیءگرا و بهشدت تایپ-سیف (Type-Safe) هست که انگار برای ساختن UI خلق شده. یادگیریش (مخصوصاً اگه جاوا، C# یا کاتلین بلد باشی) به مراتب راحتتر از دستوپنجه نرم کردن با پیچیدگیهای this و async تو جاوااسکریپته. دارت هم کامپایل AOT (برای ریلیز نهایی) و هم JIT (برای Hot Reload) رو با هم داره و این یکی از دلایل اصلی سرعت فـلاتره.
پس اگه بخوایم خلاصه کنیم، نبرد فلاتر یا ری اکت نیتیو، نبرد «استفاده از اجزای نیتیو» در مقابل «نقاشی کردن اجزای اختصاصی» هست. و آمارها نشون میده که فـلاتر این نبرد رو میبره.
پنجمین دلیل از 5 دلیل مهم برای یادگیری فلاتر، شاید از همه بخشهای فنی مهمتر باشه: «آینده». تو قرار نیست وقت و انرژیتو روی تکنولوژیای بذاری که قراره ۲ سال دیگه از رده خارج بشه.
و اینجا فلـاتر flutter مثل الماس میدرخشه. اول بذار بریم سراغ آمار خشکوخالی که زبون دروغ گفتن نداره: اگه همین الان بری گیتهاب، میبینی فریمورک فلاتر در گیتهاب نزدیک به ۱73 هزار استار (Star) گرفته. میدونی رقیب قدیمیش، ریاکت نیتیو (که ۸ سال از فلاتر قدیمیتره) چقدر داره؟ حدود 124 هزارتا. اینا فقط عدد نیستن؛ اینا نشونه «اعتماد»، «هیجان» و «حرکت» بازار به سمت فلاتره.
حالا برو سراغ Stack Overflow (همون جایی که وقتی کد ارور میده، همهمون میریم پناه میبریم!). بر اساس نظرسنجیهای سالانه، فلـاتر رسماً از ریاکت نیتیو به عنوان «محبوبترین» فریمورک کراس-پلتفرم جلو زده. این یعنی چی؟ یعنی اگه به مشکلی بخوری، میلیونها برنامهنویس دیگه قبل از تو به اون مشکل خوردن و جوابش تو اینترنت هست. تو این مسیر تنها نیستی.
و اما غول مرحله آخر: گوگل. پشت فلـاتر flutter خود گوگله. این یه پروژه تفریحی نیست که فردا ولش کنن بره. اپلیکیشنهای حیاتی خود گوگل مثل Google Pay و Google Classroom با فلاتر نوشته شدن. اما شاهبیت ماجرا یه اسم دیگه داره: فیوشا (Fuchsia).
فیوشا سیستمعامل نسل بعدی گوگله. این پروژه همین الان داره روی میلیونها دستگاه Google Nest Hub و Nest Hub Max تو خونههای مردم اجرا میشه. و نکته طلایی؟ کل رابط کاربری (UI) این سیستمعامل مدرن، از صفر تا صد با فلاتر ساخته شده.
بذار یه لحظه این جمله رو هضم کنیم. گوگل برای سیستمعامل آیندهنگر خودش، به جای اندروید نیتیو، به فلـاتر اعتماد کرده. این یعنی فلاتر فقط برای «اپ زدن» نیست؛ فلاتر اونقدر قدرتمند، بهینه و قابل اعتماده که میتونه کل بار یه سیستمعامل رو به دوش بکشه. این یه سیگنال واضح از طرف گوگله که آیندهی بخش مهمی از اکوسیستمش رو روی این فریمورک بنا کرده. این همون «تضمین» آینده شغلیه که دنبالش بودی.
لذت خالص برنامهنویسی (Developer Experience)
اگه اون 5 دلیل مهم برای یادگیری فلاتر کافی نبود، بذار یه دلیل «دلی» هم بهت بگم. کدنویسی با فلاتر، لذت بخشه. فلاتر یه فلسفه ساده داره: «همهچیز یک ویجت است» (Everything is a Widget).
تو فلاتر، یه دکمه یه ویجته. یه عکس یه ویجته. لایهبندی (Layout) مثل ردیف و ستون، خودش یه ویجته. حتی انیمیشن و پَدینگ (Padding) هم ویجت هستن. این فلسفه باعث میشه ساختن UIهای پیچیده، مثل لگو بازی بشه. تو ویجتها رو مثل تکههای لگو تو در تو قرار میدی و هر UI خفنی که تو ذهنت هست رو میسازی.
این سادگی، در کنار اون Hot Reload جادویی، در کنار زبان تمیز دارت، باعث میشه تو به جای جنگیدن با ابزار، روی «خلق کردن» تمرکز کنی. این همون «تجربه توسعهدهنده» یا DX هست که فلاتر رو انقدر اعتیادآور کرده.
اگه تا اینجای مقاله همراه من بودی، جواب سوال چرا فریم ورک فلاتر دیگه باید برات مثل روز روشن باشه. تو با یه فریمورک طرفی که پرفورمنس در حد نیتیو بهت میده، اجازه میده با یه کدبیس برای ۶ پلتفرم خروجی بگیری، با Hot Reload سرعت توسعهات رو منفجر میکنه، در نبرد مستقیم فلاتر یا ری اکت نیتیو از نظر فنی و محبوبیت داره برنده میشه، و غولی مثل گوگل پشتشه.
آیا فلاتر عالی و بینقص مطلقه؟ نه. هیچ تکنولوژیای بینقص نیست. حجم اولیه اپهای فلاتر ممکنه یه کم از نیتیو بیشتر باشه (چون موتور Skia رو با خودش حمل میکنه)، ولی در مقابل این همه مزایای فلاتر، این یه مورد قابل چشمپوشیه.
اگه تو هم به این نتیجه رسیدی که وقتشه این تکنولوژی خفن رو یاد بگیری و آینده شغلی خودت رو تضمین کنی، قدم اول اینه که زبان دارت رو قورت بدی. ما تو «نابغهها» یه برات یه دوره آماده کردیم که از صفرِ صفر، دارت رو بهت یاد میده. بعد از اون، وقتشه که وارد دنیای فلاتر بشی و با [لینک به دوره فلاتر]، ساختن اپلیکیشنهای واقعی رو شروع کنی و از این دریای بیپایان، سهم خودت رو برداری.
امتیاز شما به مقاله
5 / 5. 71
71 رای 5
5
(71)
قوانین ارسال دیدگاه
متوجه شدم
برای ثبت نظر، حتما اسم و فامیل خود را به فارسی وارد کنید.
حتما ایمیل صحیح را وارد کنید تا در صورت بررسی کارشناسان، پاسخ برای شما ایمیل شود.
داخل متن کامنت کدهای برنامه نویسی قرار ندهید.
3نقد و بررسیها
محمد
19 اسفند 1401
مقاله بسیار خوبی بود. فقط موردی که به نظرم کمتر در موردش بحث شده قابلیت استفاده در وب هست که من جایی ندیدم کامل در موردش صحبت بشه. مثلا سوالی که دارم اینه که آیا میشه یه ادمین پنل حرفه ای جوری که با ری اکت میشه زد با دارت یا فلاتر هم بشه زد ؟؟ یا حتی با فلاتر UI رو زد و بک اند PHP باشه ؟
( 3 )
موافقم با دیدگاه
مدیر سایت
19 اسفند 1401
سلام. بله شدنی هست
( 3 )
موافقم با دیدگاه
امیرعلی
19 اسفند 1401
به خدا که عالی بود. به نظرم بهترین مقالات برنامه نویسی از هر نظر برای سایت شماست. کاش بیشتر پست بذارید. خیلی شیوا نوشته بودید، طوری که یه بچه هم متوجه میشه این پست داره چی میگه. زنده باشید آقای معلمی
ما همیشه تاکید کردهایم که بهترین سرمایهگذاری، سرمایهگذاری روی خودتان است. سایت آموزشی نابغهها با هدف ارائه آموزشهای برنامه نویسی و لینوکس به شما در مسیر موفقیت کمک میکند. برای شما موفقیت و تجربهای مفید در سایت آرزو میکنیم.
ivahid Specialized and Professional Web Design &
Development Company