مراجعة شاملة لـ Google Flutter: لماذا يعشقه مطورو تطبيقات الموبايل؟
مقدمة إلى Flutter: ثورة في عالم تطوير تطبيقات الموبايل
في عالم يتزايد فيه الطلب على تطبيقات الموبايل عالية الأداء وسهلة الاستخدام، يبرز إطار عمل Flutter من Google كحل رائد يلبي طموحات المطورين واحتياجات الشركات على حد سواء. يُعرف Flutter بقدرته الفائقة على بناء تطبيقات أصلية (Native) لمنصات متعددة من قاعدة كود واحدة، مما يجعله خيارًا جذابًا لتقليل تكاليف التطوير وتسريع وتيرة العمل.
لقد تبنت شركات عملاقة مثل Google Ads، Alibaba، و Reflectly هذا الإطار، مما يؤكد على قوته وموثوقيته. في هذا المقال، سنقدم نظرة عامة سريعة على Flutter وميزاته الجديدة، وسنناقش الأسباب التي تجعل هذا الإطار يستحق الاهتمام، بالإضافة إلى التحديات المحتملة التي قد تواجه الشركات الكبرى عند اعتماده.
جوهر Flutter: ما الذي يميزه؟
لنفهم Flutter بشكل أعمق، دعنا نستعرض أبرز خصائصه:
- إطار عمل مفتوح المصدر (
Open-source) لتطوير تطبيقات متعددة المنصات (Cross-platform). - تُكتب التطبيقات باستخدام لغة البرمجة
Dart. - يمتلك محرك رسوميات خاص به يُدعى
Skia. - يدعم رسميًا ثلاث منصات:
iOS،Android، وweb(في المرحلة التجريبية). - يدعم بشكل غير رسمي منصات سطح المكتب (
desktop).
أطلقت Google أول إصدار من Flutter في نهاية فبراير 2018. واعتبارًا من أبريل 2020، كان الإصدار 1.12 متاحًا.
ما الذي يجعل Flutter فريدًا من نوعه؟
يجمع Flutter بين جودة التطبيقات الأصلية ومرونة التطوير متعدد المنصات. بينما تتيح العديد من أدوات التطوير متعدد المنصات كتابة الكود مرة واحدة واستخدامه على كل من iOS و Android، إلا أن القليل منها فقط يمكنه تقديم نفس المظهر والشعور الذي توفره التطبيقات الأصلية.
هذا هو بالضبط ما يفعله Flutter: فبدلاً من أن يكون مجرد غلاف فوق مكونات واجهة المستخدم الأصلية (مثل React Native و Xamarin)، يقوم Flutter برسم واجهة المستخدم من الصفر. يحافظ Flutter على التجربة والشعور الأصيل للتطبيق، ولا داعي للقلق بشأن أدائه على أي منصة.

بالإضافة إلى ذلك، بما أن Flutter إطار عمل مفتوح المصدر، يمكن لأي مطور إجراء تعديلات عليه عبر GitHub وإرسال طلبات الدمج. وإذا ألقيت نظرة على شعبية Flutter – 90.4 ألف نجمة على GitHub، و 12 ألف عملية تفرع (forks)، و 18,445 التزامًا (commits) – ستدرك أن المطورين يحبون Flutter ويساهمون في تحسينه باستمرار.
كيف يعمل Flutter؟
لا يتم تجميع تطبيقات Flutter مباشرة إلى تطبيقات iOS أو Android. بدلاً من ذلك، تُطلق التطبيقات بناءً على مزيج من محرك عرض (مبني على C++) و Flutter (مبني على Dart). يتم إرفاق جميع الملفات التي يتم إنشاؤها بهذه الطريقة بكل تطبيق وتجميعات حزمة تطوير البرامج (SDK) لمنصة معينة.

يشبه الأمر تطوير الألعاب: لا يخصص محرك اللعبة إطار عمله الخاص، وتُنفذ الوظائف بواسطة محرك اللعبة. وينطبق الشيء نفسه على برامج Flutter – فجميع التطبيقات المبنية على Flutter SDK تستبدل أجزاء من الأطر الأصلية بعناصر Flutter.

على الرغم من أن هذا قد يؤثر على حجم التطبيق النهائي، إلا أن الأداء لا يزال جيدًا جدًا – حيث يتم العرض بسرعات تصل إلى 120 إطارًا في الثانية (FPS). بفضل التجميع الأصلي لمعالجات ARM، والعرض البسيط، ومجموعة من الأدوات وعناصر واجهة المستخدم المدمجة (widgets)، يجعل Flutter عملية التطوير أبسط. بالإضافة إلى ذلك، يقدم بعض الميزات الجذابة مثل ميزة Hot Reload.
ميزة Hot Reload: تسريع غير مسبوق للتطوير
إليك كيفية عمل ميزة Hot Reload:
- عند النقر على زر
Hot Reload، تُعرض جميع التغييرات في الكود على الأجهزة، المحاكيات (emulators)، والمحاكيات (simulators) على الفور. - يستمر التطبيق في العمل من حيث توقف قبل النقر على
Hot Reload: يتم تحديث الكود، لكن التنفيذ يستمر دون إعادة تشغيل كاملة، مما يوفر وقتًا هائلاً للمطورين.

لماذا تختار Flutter لتطبيقاتك متعددة المنصات؟
تستمر إصدارات Flutter الجديدة في الظهور بميزات أكثر تقدمًا، ولكن هناك بالفعل العديد من الميزات المحسّنة التي تشرح تمامًا سبب هذه الشعبية الكبيرة لـ Flutter:
- جودة التطبيقات الأصلية: على عكس الاعتقاد الشائع، لا يؤدي التطوير متعدد المنصات باستخدام
Flutterإلى تدهور جودة البرمجيات. يأتيFlutterمع جميع عناصر واجهة المستخدم الأصلية (native widgets) لواجهاتAndroidوiOSمثلMaterial DesignوCupertino. بالإضافة إلى ذلك، يمكن للإطار تغيير سلوك عناصر منفصلة لإنشاء تجربة مستخدم (UX) متطابقة لمستخدمي التطبيق. - تجميع الملفات المنفصلة (
JiT compilation): يتيحFlutterتجميع الملفات المنفصلة في وضع التطوير (dev mode). هذا التجميع يسرع عملية التطوير وتصحيح الأخطاء (debugging) بشكل كبير. - مرونة وقابلية توسع الواجهة الخلفية (
Backend): يدعمFlutterالعديد من الإضافات (plugins) مثلFirebase،SQLite، وغيرها (يمكنك العثور على ما تحتاجه عبرpub.dev). يجعلFirebaseبنية التطبيق قابلة للتوسع، بلا خادم (serverless)، ومتكررة (redundant). لذا، إذا كنت تعمل على تطبيقات تتطلب قواعد بيانات في الوقت الفعلي أو وظائف سحابية، فإنFlutterيوفر لك الدعم الكامل. - سهولة التعلم: منذ البداية، وضع مطورو
Googleهدفًا لخفض حاجز الدخول. لقد عملوا بعناية على توثيق وموارد يمكن للمطورين استخدامها. حتى أن هناك أقسامًا خاصة يمكنك استخدامها لبدء تعلم الإطار اعتمادًا على تخصصك:
FlutterلمطوريAndroidFlutterلمطوريiOSFlutterلمطوريReact NativeFlutterلمطوريXamarin.FormsFlutterلمطوريweb
بفضل وثائق Flutter المفصلة، ستتمكن من معرفة كيفية كتابة الكود بلغة Dart حتى لو كانت لديك خبرة فقط في أدوات رسوميات Unity لإنشاء ألعاب Android.
Flutter 1.12 (الإصدار الأخير) ومميزاته
دعنا نلقي نظرة على الميزات الجديدة التي قدمها Flutter في إصداره الأخير 1.12:
دعم الوضع الداكن (iOS Dark mode)
يدعم Flutter الآن مظهر iOS 13، بما في ذلك الدعم الكامل للوضع الداكن في عناصر واجهة المستخدم Cupertino. ولا يقتصر الأمر على تبديل الخلفية فحسب، بل يتكيف أيضًا مع بقية الألوان لتتناسب بشكل جيد.
دعم الإضافة إلى التطبيق (Add-to-app support)
تحسين كبير آخر هو تحديث Add-to-App، والذي يهدف إلى دمج Flutter في تطبيقات iOS/Android الموجودة بالفعل. يدعم الإصدار الجديد من Flutter إضافة مثيل Flutter واحد بملء الشاشة إلى التطبيق، بالإضافة إلى:
- تكامل واجهات برمجة التطبيقات (
APIs) المستقرة فيJava،Kotlin،Objective-C، وSwift. - دعم استخدام الإضافات في وحدات
Flutter. - آليات تكامل إضافية عبر ملفات
Android AARsوأطر عملiOS.
دعم الويب التجريبي (Beta web support)
توفر قنوات Flutter master، dev، و beta دعمًا محسنًا للويب. هل تريد بعض الأمثلة؟ إليك Rivet، وهو مشروع تعليمي استخدم Flutter و Firebase لإنشاء نسخة ويب من تطبيقهم.

لغة Dart 2.7
يقدم الإصدار الجديد من الإطار Dart 2.7. يعزز هذا التحديث تجربة العمل مع Dart 2.5 في كيفية التعامل الآمن مع السلاسل النصية (safe strings handles abilities) وعمليات التوسع (extension processes). يساعد هذا المطورين على منع الأخطاء عندما تحصل المتغيرات على قيمة صفرية وتحليل الأعداد الصحيحة في سلسلة نصية.
ميزات أخرى في الإصدار الأخير من Flutter:
- دعم سطح مكتب
macOS(تجريبيalpha) - تصحيح الأخطاء متعدد الأجهزة (
multi-device debugging) - اختبار الصور الذهبية (
golden image testing) - تحسينات بناء
Android(Android build improvements) - تحديث
DartPad
مميزاته رائعة، ولكن ليست خالية من المشاكل: ما الذي يعيق المطورين؟
Flutter رائع حقًا: سهل البدء، بسيط في العمل، وتقدمه شركة تقنية عملاقة. ومع ذلك، إليك الأسباب التي قد تجعل مطوريك الكبار لا يشاركونك تفاؤلك:
شعبية Dart (المنخفضة)
على عكس Java/Kotlin لـ Android أو Swift/Objective-C لـ iOS، لا تتمتع Dart بشعبية عالية بعد. ومن غير المرجح أن تصل إلى تلك المستويات قريبًا. Dart ليست صعبة التعلم، وهناك الكثير من الدروس التعليمية، لكن بعض المطورين يفضلون الالتزام بـ Java والأدوات المألوفة الأخرى. في الوقت نفسه، لا يمكنك استخدام Flutter دون استخدام Dart: حتى ميزة Hot Reload القوية لن تعمل بدون Dart.
لا يدعم جميع الأجهزة
لا يمكنك إنشاء تطبيقات لأجهزة iOS ذات 32 بت مثل تلك الأقدم من iPhone 5s. وينطبق الشيء نفسه على أجهزة الكمبيوتر المكتبية التي تعمل بنظام Windows: لا يمكنك تشغيل Flutter على جهاز الكمبيوتر المحمول ذو 32 بت. وليس لدى مطوري Flutter خطط لإصلاح ذلك لأن "هذا سيتطلب قدرًا كبيرًا جدًا من العمل". لذا، إذا كنت ترغب في البرمجة باستخدام Flutter، فسيتعين عليك امتلاك جهاز x64-bit أو ترقية الجهاز الذي تستخدمه حاليًا.
عدد محدود من المكتبات
على الرغم من وجود العديد من مكتبات Flutter مثل fl_chart (لرسم الرسوم البيانية في Flutter)، و path_provider (المستخدم لتحديد موقع ملف على Android/iOS)، و flutter_sliding_tutorial وغيرها الكثير، إلا أن عددها لا يزال محدودًا.

هذا ليس صعب التفسير: Flutter إطار عمل حديث نسبيًا، ولم يكن لدى المطورين الوقت الكافي لتطوير نفس العدد الكبير من المكتبات التي توفرها اللغات الأصلية. ومع ذلك، فإن أهم المكتبات موجودة بالفعل، وتظهر مكتبات جديدة باستمرار.
حجم تطبيقات Flutter أكبر
مقارنة بالتطبيقات المطورة بشكل أصلي. قام فريق Flutter بقياس الحد الأدنى لحجم التطبيق (بدون مكونات Material Components، فقط عنصر Center widget واحد، تم بناؤه باستخدام flutter build apk --split-per-abi)، مجمّعًا ومضغوطًا، ليبلغ 4.3 ميجابايت لـ ARM، و 4.6 ميجابايت لـ ARM 64. يبلغ حجم التطبيق الأساسي الآن حوالي 4 ميجابايت في Android وحوالي 10 ميجابايت في iOS.
خبرة مثبتة قليلة
قد يكون Flutter محبوبًا من قبل المطورين، لكن الشركات الكبيرة لم تسارع إلى التوقف عن إنشاء تطبيقات أصلية (أو React Native) والتحول إلى Flutter. بالنسبة لمعظم الشركات، فإن أكبر مشكلة هي حداثة Flutter. Dart أحدث من Java أو C#، و Flutter نفسه جديد تمامًا. بالطبع، هناك العديد من تطبيقات Flutter مفتوحة المصدر، بما في ذلك تطبيقات كبيرة مثل Google Ads أو Hamilton، ولكن ليس عددًا كبيرًا جدًا. ولا أحد يريد أن يكون الشخص الذي يتبنى إطار عمل جديد تمامًا ليضطر إلى التحول إلى التطوير الأصلي بعد بضعة أشهر.

ولكن الأهم من ذلك هو أن Flutter هو مسار قد تسير فيه بمفردك: لا توجد العديد من أفضل الممارسات المؤكدة (على الأقل في المشاريع واسعة النطاق)، وهناك دائمًا احتمال أن تكون أول من يواجه مشكلة معينة، وأمل ضئيل في أن يساعدك أحد – سيتعين عليك اتخاذ كل خطوة بعناية وأن تكون مستعدًا لمواجهة العواقب.
متى يجب استخدام Flutter؟
في المقام الأول، من الأفضل استخدام Flutter لشركات MVP الناشئة (Minimum Viable Product) عندما يكون لديك وقت وموارد مالية محدودة للتحقق من نموذج العمل. تطبيق Flutter أرخص*:
- *مقارنة بتكلفة تطبيقين أصليين.
- فريق التطوير أصغر بنسبة 40%.
- عمليات خطية.
- يمكنك قضاء المزيد من الوقت في العمل على ميزات التطبيق.
باختيار مشروع Flutter، فإنك تقلل عدد ساعات التطوير. لا يستغرق تطوير Flutter نفس القدر من الوقت مقارنة بالتطوير الأصلي. إليك مثال: لنفترض أنك تنشئ تطبيقًا مشابهًا لـ Instagram لمنصتين. سيستغرق تطوير iOS، تقريبًا، حوالي 700 ساعة، و Android أيضًا 700 ساعة. باستخدام Flutter، ستغطي كلتا المنصتين وتوفر الوقت: 700 ساعة Android + 700 ساعة iOS مقابل 700 ساعة Flutter. ستوفر الكثير من الوقت الذي يمكنك قضائه في شيء آخر، مثل صقل الميزات.
الخلاصة
إذا كنت تبني تطبيقات في وقت محدود وبميزانية محدودة، فإن Flutter يستحق التجربة بالتأكيد. إنه جيد بقدر ما يبدو، ومع كل تحديث جديد، يضيف مطورو Google المزيد من الأدوات لتطوير تطبيقات متعددة المنصات. بالطبع، قد يبدو هذا الإطار غير عادي لمحبي C# و Java، لكن هذا لا يعني أنه سيجبرك على الخروج من منطقة راحتك. بعد إتقان الاختلافات النحوية الصغيرة، سترى قريبًا أن تطوير واجهة المستخدم يسير أسرع عدة مرات مقارنة بالتطوير الأصلي. وإذا نجحت، وإذا استمر Flutter في التطور، فقد يجلب لك بعض التجارب والفرص المثيرة في تطوير تطبيقات الموبايل في المستقبل.
الخلاصة التقنية
Flutter يمثل قفزة نوعية في مجال تطوير تطبيقات الموبايل، مقدمًا مزيجًا فريدًا من الأداء الأصلي ومرونة التطوير متعدد المنصات. قدرته على رسم واجهة المستخدم من الصفر، وميزة Hot Reload، ودعمه القوي للواجهات الخلفية السحابية، تجعله أداة لا غنى عنها للشركات الناشئة والمطورين الذين يسعون للكفاءة. ومع ذلك، لا تزال حداثة الإطار، وشعبية لغة Dart، وعدد المكتبات المحدود، وحجم التطبيقات الأكبر نسبيًا، تشكل تحديات يجب أخذها في الاعتبار. يبقى Flutter خيارًا استراتيجيًا واعدًا، خاصة للمشاريع التي تتطلب سرعة في الإنجاز وتكاليف تطوير منخفضة، مع توقع نمو مستمر في مجتمعه وميزاته.