الطاقة الهجينة: مزايا الرفرفة وفوائدها

نشرت: 2022-03-11

Flutter عبارة عن نظام أساسي لتطوير تطبيقات الأجهزة المحمولة الهجينة من Google وصل إلى 1.0 في أواخر عام 2018. في حين أنه مشارك جديد في قائمة أطر التطوير الهجينة ، إلا أن الأفكار العظيمة وراءه تسببت في انتشاره سريعًا بين المطورين.

هدفي في هذه المقالة هو استكشاف هذه الأفكار والكتابة عن تجربتي مع Flutter ، ولماذا أشعر أنه مستقبل تطوير تطبيقات الهاتف المحمول الهجينة.

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

  • تطبيق إعلانات Google
  • تطبيق GrabFood's GrabMerchant
  • تطبيق Xianyu من Alibaba Group ، والذي تم تنزيله أكثر من 50 مليون
  • نوبانك
  • تطبيق eBay Motors

في حين أن إطار عمل Flutter قادر تمامًا ، إلا أنه لا يزال جديدًا نسبيًا. من أجل تحقيق التوازن ، سأناقش أيضًا بعض القيود التي يجب أن تكون على دراية بها قبل الالتزام بـ Flutter.

آمل أنه بعد قراءة هذا المقال ، تكون لديك فكرة جيدة عن إيجابيات وسلبيات Flutter ، ولديك معلومات كافية لتقرير ما إذا كان يجب عليك استخدام Flutter في مشروع تطبيقات الهاتف المحمول التالي.

مزايا الرفرفة (من منظور تنموي)

بصفتي مطورًا ، هذه هي وجهة نظري الأكثر دراية بها ويمكنني مشاركة معظم المعلومات عنها.

منحنى التعلم السريع

المفاجأة السارة الأولى التي قدمها Flutter للمطورين هي مدى سرعة البدء. يستغرق الأمر أقل من 30 دقيقة لإنهاء عملية التثبيت وإعداد بيئة تطوير العمل. من هناك ، أنت جاهز لإنشاء أول تطبيق Flutter.

دمج المحرر الشعبي

يحتوي Flutter أيضًا على تكاملات محرر رائعة. أنا شخصياً أستخدم Android Studio ، ولكن هناك إرشادات متاحة لإعداد IntelliJ أو VSCode أو Emacs.

عملية التنمية النظيفة

مقارنةً بتجربتي السابقة مع أطر التطبيقات المختلطة ، تبدو عملية التطوير أيضًا أكثر نظافة . على سبيل المثال ، عندما استخدمت WebViews لعرض قوائم تحتوي على العديد من العناصر (حوالي 100 أو نحو ذلك) ، كان علي التعامل مع الاستخدام العالي لوحدة المعالجة المركزية ، خاصةً عندما كان المستخدم يتنقل في القائمة. لقد قمت بحل تلك المشكلات باستخدام عناصر إطار العمل الأيوني المصممة خصيصًا لهذا الغرض. في Flutter ، هناك طريقة واحدة مقبولة لعرض القوائم ، وهي ListView ، والتي تتمتع بأداء مذهل خارج الصندوق.

لايف تحديث

الشيء الآخر الذي فاجأني بسرور هو وظيفة إعادة التحميل المباشر. بصفتي مطورًا مكدسًا كاملًا ، كنت معتادًا على أطر مثل BrowserWatch التي توفر إعادة تحميل مباشرة في المتصفح.

لا يحتوي التطوير الأصلي على ذلك (لكنني أعتقد أن SwiftUI من Apple تحرز بعض التقدم على هذا الصعيد لتطوير iOS). يحتاج مطورو Android و iOS عادةً إلى كتابة التعليمات البرمجية ثم الانتظار حتى يتم تجميعها وتحميلها على الجهاز أو جهاز المحاكاة قبل أن يتمكنوا من رؤية التغييرات.

يوفر Flutter (a la React Native) آلية إعادة تحميل مباشرة ، حيث يتم إعادة تحميل رمز التطبيق على الجهاز بمجرد أن يضغط المطورون على "حفظ". هذا يعطي ردود فعل فورية ، مما يجعل التطوير أسرع كثيرًا.

أداء

أداء التطبيق هو مقياس آخر يظهر فيه Flutter ببطء كفائز.

نظرًا لأن إطار عمل Flutter قيد التطوير النشط ، فهناك العديد من الأماكن التي يمكن فيها إجراء تحسينات في الأداء. يتضح هذا ، على سبيل المثال ، في Flutter 1.17 ، الذي أدى إلى زيادة أداء العرض بنسبة تصل إلى 50٪ على أجهزة iOS الأحدث ، وخفض استهلاك الذاكرة بنسبة تصل إلى 70٪ لأنواع معينة من أحمال العمل.

الاتساق عبر الأنظمة الأساسية

تعد واجهات المستخدم المتسقة حقًا عبر كلا النظامين الأساسيين للجوّال ميزة رائعة أخرى لـ Flutter. نظرًا لأن Flutter يستخدم محرك العرض الخاص به - المزيد عن ذلك لاحقًا - فإن واجهة المستخدم هي نفسها تمامًا على iOS و Android. لم يعد يتعين على المطورين التعامل مع مشكلات التصميم الخاصة بالنظام الأساسي للحصول على كل شيء يشبه التصميم تمامًا: هذا الضمان جزء من إطار العمل.

اللغة والأدوات والإرشاد

هناك ثلاثة جوانب أخرى أصغر ، لكنها لا تزال مهمة ، أشعر أنه يجب ذكرها هنا:

  • Dart ، اللغة التي تُبرمج بها تطبيقات Flutter ، بسيطة جدًا للبدء بها. لكنها أيضًا لغة قوية جدًا ، يقصدها Google في الأصل أن تحل محل JavaScript. إذا كان للمطورين أي خبرة في JavaScript أو غيرها من اللغات الشبيهة بلغة C ، فلن يواجهوا مشكلة في التقاط Dart في غضون يوم أو يومين.
  • يوجد مدير قوي للمكونات الإضافية (pub) مدرج في سلسلة الأدوات الافتراضية ومكتبة ضخمة من المكونات الإضافية المتاحة من خلال مستودع البرنامج المساعد pub.dev.
  • يعد إنشاء مكونات إضافية للاستفادة من إمكانات النظام الأساسي المحلي أمرًا سهلاً للغاية ، لذلك إذا احتاج المطورون إلى الوصول إلى ميزة النظام الأساسي التي لا يوجد بها مكون إضافي بالفعل ، فإن تشفير أحدها ليس صعبًا للغاية.

مزايا الرفرفة (من منظور الأعمال)

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

يسمح Flutter للمطورين ببناء بعض واجهات المستخدم الجميلة حقًا. ألقِ نظرة على التحدي الأخير من Google و Lenovo لإنشاء واجهة مستخدم جميلة لوجه الساعة لـ Lenovo Smart Clock. الفائز ، Particle Clock لميكل أندرسون ، ليس فقط أنيقًا بشكل فريد - إنه يعرض أيضًا مدى أداء الرسوم المتحركة في Flutter.

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

القيود التي يجب مراعاتها قبل استخدام Flutter

من حيث الإنصاف ، فإن Flutter ، كونها أحدث ، لم يتم اختبارها تمامًا مثل أطر تطبيقات الأجهزة المحمولة الهجينة الأخرى مثل React Native - بعد كل شيء ، يغطي وصول المستخدم النهائي لـ React Native تطبيقات الأجهزة المحمولة مثل Facebook و Instagram و Skype و Discord.

الإجابة الافتراضية لـ "هل يجب أن أستخدم Flutter؟" هو ، في الوقت الحالي ، نعم حذر . هذا لأن مديري المشاريع لا يزالون بحاجة إلى التفكير في الميزات المتقدمة التي سيحتاجون إليها ، إن وجدت ، والتأكد من توفر هذه الميزات في Flutter قبل الالتزام باستخدامها. على وجه الخصوص ، يجدر السؤال عن المكتبات والإضافات التي قد يحتاجها الفريق لبناء تطبيق معين. كإدخال جديد في أطر تطبيقات الأجهزة المحمولة ، لا يمتلك Flutter النطاق الواسع للمكتبات والمكونات الإضافية التي يمتلكها React Native.

على سبيل المثال ، لم يكتمل دعم الكاميرا في Flutter بعد ، حيث أن التكبير والتحكم في الفلاش ليسوا جزءًا من المكوِّن الإضافي الرسمي للكاميرا. بالنسبة لي ، لم يكن ذلك بمثابة كسر للصفقة ، حيث تمكنت من العثور على مكون إضافي تابع لجهة خارجية عندما احتجت إلى دمج وظائف الصور / الفيديو في تطبيق كنت أقوم ببنائه.

مكون إضافي رئيسي آخر قد يفوتك هو خرائط Google. لا توجد مكونات إضافية لخرائط Google من Dart ، وعلى الرغم من وجود مكون إضافي للسماح بدمج خرائط Google في كود Flutter الخاص بك ، فإنه يستخدم ميزات Flutter (عروض النظام الأساسي) التي لا تزال في حالة معاينة المطورين.

هناك شيء آخر لن يؤثر على العديد من المشاريع ، ولكن يجب أن تكون على دراية به ، وهو أنه في الوقت الحالي ، لا يدعم Flutter أي قدرات ثلاثية الأبعاد. يركز الفريق على 2D فقط في الوقت الحالي. لكن معظم التطبيقات لا تستخدم أي وظائف ثلاثية الأبعاد ، لذلك لا ينبغي أن يكون هذا بمثابة كسر للصفقة بالنسبة لغالبية المطورين.

بعض النصائح من تجربتي مع Flutter

بعد إصدار ثلاثة تطبيقات Flutter على مدار العامين الماضيين ، تعلمت عددًا من الأشياء التي كنت أتمنى لو تم إخباري بها عندما كنت أبدأ. سأدرجهم هنا على أمل أن يساعدوك في رحلة تطوير Flutter.

من السهل جدًا البدء باستخدام Flutter. لقد بدأت بدورة رائعة في App Brewery. ومع ذلك ، بعد الانتهاء من الوحدات القليلة الأولى ، اعتقدت أنني تعلمت ما يكفي وبدأت في إنشاء أول تطبيق أطلقته.

بسبب نفاد صبري ، تخطيت عددًا من الوحدات في تلك الدورة والتي تبين أنها مهمة ، وكان علي أن أتعلم دروس هذه الوحدات بالطريقة الصعبة عن طريق ارتكاب الأخطاء. على وجه التحديد ، كنت سأقوم بعمل أفضل بكثير في أول استخدام لي لتطبيق Flutter لتطوير التطبيق إذا كنت قد تعلمت بعض أفضل ممارسات Flutter:

  • كيفية وضع نموذجي لكود تطبيق Flutter وبنيته.
  • كيف تعمل إدارة الدولة.
  • كيفية مصادقة المستخدمين وتتبع حالة المصادقة عبر الصفحات المختلفة لتطبيق Flutter الخاص بي.
  • كيفية دمج الإشعارات باستخدام حزمة Firebase Messaging.

انتهى بي الأمر بتعلم كل هذه الأشياء ، لكن كان علي أن أرتكب الكثير من الأخطاء أولاً. أعدت كتابة أجزاء مهمة من أول تطبيق أنشأته. مع تطبيق Flutter الثاني ، تعلمت من أخطائي وانتهى بي الأمر بعمل أفضل وأسرع.

هناك العديد من الموارد التي يمكنك العثور عليها بسهولة من خلال البحث في Google للتعرف على المفاهيم التي ذكرتها أعلاه. يمكنك البدء بالاطلاع على الارتباطات الموجودة في صفحة "مزيد من المعلومات" على موقع Flutter.

شيء آخر وجدته هو أنه نظرًا لكيفية ظهور Flutter الجديد ، لا يوجد نمط واحد لهيكلة تطبيقك. نظرًا لأنني قادم من مهنة تطوير تعتمد في الغالب على Django ، فقد اعتدت على معرفة أن MVC هو النمط الذي يجب استخدامه في تطبيقات Django الخاصة بي. يتمتع iOS أيضًا بفائز واضح في نمط MVVM الذي يتبعه. يحتوي Android على مجموعة من الإرشادات الخاصة به حول كيفية تصميم التطبيق بشكل أفضل.

لا يحتوي Flutter على نمط معماري من هذا القبيل "فاز" على العديد من الاحتمالات. كان هذا شيئًا أصابني بوقت عصيب في البداية. في النهاية ، بعد أن طورت عددًا من تطبيقات Flutter ، أعتقد أنه من الأفضل ببساطة اختيار بنية والتشبث بها.

أنا شخصياً أستخدم حزمة provider كإطار عمل لإدارة التغيير وإدخال التبعية. تنقسم تطبيقات My Flutter تقريبًا إلى ثلاثة أسطر:

  1. المشاهدات ، وهي الأدوات التي تنشئ التطبيق ، بما في ذلك الشاشات. أقوم بحقن الخدمات والنماذج باستخدام Consumer واجهة المستخدم من حزمة Provider في وجهات نظري حتى أتمكن من إنشاء واجهة المستخدم بناءً على البيانات المتاحة. تعيد أداة Consumer أيضًا بناء العرض عندما تتغير الحالة ، وهو كيف تتفاعل تطبيقاتي مع تغيرات الحالة.
  2. النماذج ، وهي كائنات قديمة بسيطة أستخدمها للاحتفاظ بالبيانات المنظمة.
  3. الخدمات / وحدات التحكم ، حيث يذهب معظم منطق الأعمال. يتم أيضًا ترميز واجهات API هنا ، والتي يمكنها استرداد البيانات وإرسالها إلى API. توفر واجهات API هذه وتقبل النماذج لتمرير البيانات.

تستحق مكتبة الكتلة أيضًا التفكير كبديل لحزمة provider . له بنية مختلفة قليلاً ، ويستخدم تدفقات الأحداث والحالات لربط وجهات النظر والنماذج.

الموضوعات ذات الصلة: كيفية الاستفادة من BLoC لمشاركة التعليمات البرمجية في Flutter و AngularDart

إنها طريقة أكثر تعقيدًا لإدارة الحالة من استخدام مكتبة provider ، ولكنها تؤتي ثمارها إذا كان لديك تطبيق معقد حيث تقوم بإجراء تغييرات على نفس البيانات من مصادر متعددة وتحتاج إلى الاستجابة لهذه التغييرات من أماكن متعددة.

إذا انتهى بك الأمر إلى عدم استخدام BLoC أو provider ، فسيتعين عليك التوصل إلى طريقة ما لإدارة الحالة عبر التطبيق الخاص بك ، خاصةً عندما يتعلق الأمر بالإشعارات.

كيف يقارن Flutter مع الأطر الهجينة الأخرى

رد فعل أصلي

يُعد React Native إلى حد بعيد أكثر إطار عمل تطبيقات الجوّال الهجين نجاحًا وشعبية حتى الآن ، ولسبب وجيه. استغرق الأمر إطار عمل ويب أماميًا شائعًا وجيد الصنع ، React ، وسمح لملايين من مطوري الواجهة الأمامية بالبدء في كتابة تطبيقات الهاتف المحمول أيضًا. أنا واثق من أن العديد من تطبيقات الأجهزة المحمولة الرائعة التي نمتلكها اليوم لم يكن من الممكن صنعها أبدًا إذا كان على المطورين إيجاد الوقت والحافز لتعلم تطبيقات SDK لتطوير iOS و Android.

في ظل هذه الخلفية ، أنا واثق من القول إن Flutter سيفوز في النهاية كإطار عمل رائد لتطبيقات الهاتف المحمول الهجين. هناك سببان لذلك.

يتم وصف مكونات React Native في كود JavaScript وترجمتها إلى عناصر تحكم أصلية. هذا يعني أن المستخدمين يشعرون بواجهة مستخدم مختلفة في إصدارات iOS و Android من التطبيق. إذا كان المطورون يحاولون تحقيق تجربة أصلية لمستخدميهم ، فهذا شيء رائع.

ومع ذلك ، فهذا يعني أيضًا أنه إذا أراد المطورون الحصول على نفس واجهة المستخدم المتسقة عبر كلا النظامين الأساسيين للجوّال ، فعليهم العمل بجد لتصميم المكونات الأصلية لتبدو كما هي ، أو استخدام مكونات مختلفة تمامًا توفر نفس الشكل والمظهر عبر كليهما المنصات.

قارن هذا بـ Flutter ، حيث يوفر إطار العمل عناصر واجهة المستخدم الخاصة به على جميع الأنظمة الأساسية المدعومة. لا تحدث ترجمة ، لأن Flutter لا تعتمد على عناصر التحكم الأصلية لرسم واجهة المستخدم. بدلاً من ذلك ، يستخدم مكتبته الخاصة من الضوابط. توفر مكتبة عناصر واجهة المستخدم في Flutter أدوات تبدو وكأنها عناصر تحكم أصلية ، لكنها اختيارية تمامًا.

هذا النهج له إيجابياته وسلبياته. أكبر مؤيد هو أن لديك الآن نفس التطبيق بالضبط عبر كلا النظامين الأساسيين. لكنك تتخلى عن بعض الأشياء لتحقيق ذلك.

نظرًا لأن Flutter يستخدم عناصر واجهة المستخدم الخاصة به بدلاً من استخدام الأدوات الأصلية ، فلا يمكنك استخدام عدد كبير من المكتبات الحالية التي توفر عناصر تحكم مخصصة كما يمكنك مع الحد الأدنى من العمل على React Native. في React Native ، من السهل جدًا كتابة غلاف صغير حول أي عنصر تحكم أصلي موجود وتشغيله. هذا هو السبب أيضًا في الوقت الحالي ، لا يوجد تطبيق مستقر لخرائط Google لتطبيق Flutter.

ومع ذلك ، يتم العمل على القدرة على تضمين عناصر التحكم الأصلية في الوقت الحالي وهي في معاينة المطور ، مما يعني أنه يمكنك استخدامها ولكن قد تضطر إلى مواجهة الأخطاء. بمجرد إطلاقه ، سيغلق هذا الثقب الكبير في الوظائف في Flutter مقارنةً بـ React Native.

توفر ميزة Flutter نفسها - باستخدام مكتبتها الخاصة من عناصر واجهة المستخدم بدلاً من المكتبة الأصلية - فائدة كبيرة أيضًا عندما تريد إنشاء مكون جديد تمامًا. في React Native ، سيتعين عليك إنشاء مكون نظام أساسي أصلي واستيراده إلى تطبيقك عبر عمليات الربط.

باستخدام Flutter ، يمكنك إنشاء مكونات مخصصة في رمز Dart مباشرةً. لديك سيطرة كاملة على واجهة المستخدم مع عناصر واجهة مستخدم مثل CustomPainter التي تتيح لك رسم كل ما تحتاجه ، ولديك مكتبة من الأدوات المصغّرة التي تتيح لك تنفيذ الرسوم المتحركة المخصصة. لن تحتاج أبدًا إلى الخروج من قاعدة بيانات Dart لإنشاء هذه الأدوات المصغّرة المخصصة.

وأعتقد أن هذا هو أحد أكبر فوائد Flutter. لديك سيطرة كاملة على واجهة المستخدم الخاصة بك من كود Dart ولا داعي للقلق بعد الآن بشأن تعلم SDK الأصلي للأنظمة الأساسية التي تقوم بتطويرها.

اباتشي كوردوفا

Apache Cordova ليس إطار عمل بقدر ما هو غلاف متصفح. باستخدام Cordova ، يمكنك إنشاء تطبيقك باستخدام تقنيات الويب: HTML و CSS و JavaScript. يوفر لك كوردوفا طريقة لتشغيل تطبيق الويب هذا على الأنظمة الأساسية للجوّال ويكشف عن واجهات برمجة التطبيقات للنظام الأساسي الأصلي في JavaScript حتى يتمكن تطبيقك من التفاعل مع النظام الأساسي.

يوجد عدد من الأطر المختلفة المصممة لقرطبة. أحد أشهر تلك التي استخدمتها في الماضي هو إطار العمل الأيوني. يوفر مجموعة من مكونات واجهة المستخدم التي تبدو وتعمل بشكل مشابه لمكونات النظام الأساسي الأصلية. ومع ذلك ، يتم تنفيذ هذه المكونات باستخدام HTML / CSS / JavaScript.

تجربة التطوير مع Cordova و Ionic رائعة حقًا ، والبدء في العمل سريع جدًا إذا كنت بالفعل مطور ويب. نظرًا لأنك تبني تطبيقات باستخدام تقنيات الويب ، فلديك نظام الويب البيئي بالكامل متاحًا لك. فكر في مئات الآلاف من المكونات الصغيرة والمكتبات القائمة على HTML / CSS / JavaScript ، ويمكنك استخدام معظمها - إن لم يكن جميعها -. هذا يعني أن معظم "الحاجيات" التي تحتاجها متاحة بالفعل لك على الإنترنت.

هذا أيضًا جانب سلبي. نظرًا لأنك تستخدم تقنيات الويب لإنشاء تطبيقاتك ، فإن الأمر يتطلب قدرًا كبيرًا من العناية للتأكد من أن التطبيق يبدو وكأنه تطبيق جوال ، وليس مجرد موقع ويب تم تقليصه للعمل على الهاتف المحمول.

في حين أن Cordova طريقة رائعة لتطوير MVP أو حتى الإصدارات القليلة الأولى من تطبيقك ، فإن أول تطبيق أنشأته في Flutter كان منفذًا لتطبيق Ionic. كانت تحسينات الأداء التي حصلنا عليها ، خاصةً في المشاهدات التي تحتوي على الكثير من المحتوى للتمرير خلالها ، ملحوظة منذ التفاعل الأول.

زامارين

ليس لدي أي خبرة مع Xamarian ، لذلك لا يمكنني مقارنة الاثنين بشكل عادل. ومع ذلك ، خلال بحثي ، صادفت مقالًا رائعًا يقوم بمقارنة عادلة.

بينما ينتهي المقال بربطة عنق بين Flutter و Xamarian ، يمكنني القول بثقة أنه إذا كنت أقرأه واضطررت إلى الاختيار بين الإطارين ، كنت سأختار Flutter لأن الأشياء التي تبرز فيها هي الأشياء أن أقدر أكثر.

نظرة عامة فنية على Flutter

Flutter: "محرك اللعبة" لأطر عمل التطبيقات المختلطة

من بين أطر تطبيقات الأجهزة المحمولة الهجينة ، يتمتع Flutter بنهج فريد. لا يفوض واجهة المستخدم للنظام الأساسي الأصلي ، أو يستخدم طريقة عرض الويب. بدلاً من ذلك ، يستخدم Flutter محرك العرض الخاص به لرسم واجهة المستخدم. هذا مشابه لكيفية استخدام الألعاب لمحرك اللعبة الذي يولد جميع أجزاء واجهات المستخدم الخاصة بها ، بدلاً من استخدام عناصر التحكم الأصلية.

يستخدم Flutter محرك رسومات Skia عالي الأداء الذي تم اختباره في المعركة لرسم كل شيء في تطبيق هاتفك المحمول. يوفر استخدام Skia ميزتين رئيسيتين يمكنني التفكير فيهما ، على الرغم من أنني متأكد من أن مهندسي Google وراء Flutter كان لديهم الكثير في الاعتبار:

  1. سيبدو تطبيقك كما هو تمامًا على جميع الأنظمة الأساسية دون الحاجة إلى تخصيصه لكل منها.
  2. سيحصل تطبيقك على أداء رائع ، مشابه للتطبيقات الأصلية ، لأنه لا توجد طبقة وسيطة يجب أن تترجم كودك إلى كود النظام الأساسي الأصلي لرسم الحاجيات.

كل شيء هو القطعة

تتحدث مستندات Flutter عن Flutter على أنها "إطار عمل بأسلوب React." يتضح هذا في كيفية إنشاء التطبيقات من خلال تكوين عناصر واجهة مستخدم أصغر ( مكونات في مصطلحات React) معًا.

ومع ذلك ، يأخذ Flutter كل شيء على أنه نهج عنصر واجهة مستخدم خطوة واحدة إلى الأمام أكثر من أي إطار عمل آخر عملت معه.

مثال بسيط هو الحشو. في معظم الأطر ، الحشو هو سمة من سمات عناصر واجهة المستخدم. في Flutter ، يعد Padding أداة يمكنها التفاف عناصر واجهة مستخدم أخرى داخل نفسها وإضافة حشوة حول عنصر واجهة المستخدم التابع لها.

وبشكل أكثر تفردًا ، فإن InheritedWidget لا يحتوي على واجهة مستخدم ولا يوفر أي تفاعل للمستخدم. وتتمثل مهمتها الوحيدة في إضافة معلومات إلى شجرة عناصر واجهة المستخدم بحيث يمكنك سحب هذه المعلومات في نقطة ما في أعماق الشجرة.

على سبيل المثال ، يمكن لجذر التطبيق الخاص بك - أداة MaterialApp - إدخال خدمة مصادقة في شجرة عناصر واجهة المستخدم باستخدام InheritedWidget . الآن ، في عمق الشجرة في بعض الصفحات الأخرى ، مثل صفحة ملف تعريف المستخدم ، يمكنك استخدام طريقة لاستخراج خدمة المصادقة هذه واستخدامها.

هذا كل شيء هو نهج القطعة يستغرق بعض الوقت لتعتاد عليه. ولكن بمجرد أن تصبح على دراية به ، يصبح وسيلة قوية لبناء وظائف في تطبيقاتك.

رفرفة ، وثبة ، وحفر في المصدر

يرتبط Flutter ارتباطًا وثيقًا بـ Dart. بينما تم بناء محرك التقديم الأساسي في C / C ++ ، فإن هذا جزء صغير فقط من Flutter.

تمت كتابة غالبية قاعدة بيانات Flutter بلغة Dart ، وهناك أسباب ممتازة لاختيارها فريق Flutter. لكن أكبر فائدة بالنسبة لي كانت أنه يمكنني بسهولة إلقاء نظرة على الكود المصدري لإطار العمل - وجميع الأدوات المختلفة التي يوفرها - والتعلم منها.

هذه ميزة أكثر قوة مما يدركه العديد من المطورين. أوصي بأن يحاول معظم المطورين العثور على إجابات في كود أطر عملهم / مكتباتهم ، لأن ذلك لا يساعدهم فقط على فهم ما يحدث تحت الأغلفة ، بل يعرضهم أيضًا إلى تعليمات برمجية عالية الجودة ومُصممة جيدًا ، وهي طريقة مؤكدة من النمو كمطور.

إمكانية التشغيل البيني للمنصة الأصلية

بينما يوفر Flutter طبقة واجهة المستخدم ، ويتم التعامل مع منطق الأعمال بسهولة عبر حزم Dart الخالصة ، للوصول إلى إمكانات النظام الأساسي الأصلي مثل تحديد الموقع الجغرافي والتحكم في الكاميرا ، فإن استخدام حزم الجهات الخارجية من pub.dev هو أسهل إستراتيجية.

ومع ذلك ، إذا كانت هناك بعض الوظائف التي تحتاجها والتي لا تتوفر عبر حزمة موجودة ، فإن كتابة واحدة بنفسك ليست صعبة للغاية. لم أقم ببناء أي حزم أصلية للنظام الأساسي بنفسي ، لكنني نظرت إلى الكود المصدري للكثيرين بدافع الفضول.

على الرغم من أنني لست مطور تطبيق أصلي ، إلا أنني تمكنت في الغالب من فهم الأجزاء الأصلية من هذه المكونات الإضافية ومعرفة كيفية اتصالها بوقت تشغيل Dart عبر تمرير الرسائل. بالنسبة لمطوري الأنظمة الأساسية ذوي الخبرة ، سيكون إنشاء حزمة جديدة للاستفادة من القدرة الأصلية أمرًا سهلاً للغاية.

هل يجب عليك استخدام Flutter في مشروعك القادم؟

نأمل أن تكون هذه المقالة قد أعطتك معلومات كافية لتحديد ما إذا كان يمكنك استخدام Flutter في مشروع تطبيقات الهاتف المحمول الخاص بك. لقد حاولت إعطاء صورة متوازنة لـ Flutter ، مع سرد الإيجابيات والسلبيات.

بينما لا يمكن لأي شخص اتخاذ القرار نيابة عنك ، يمكنني أن أقدم لك بعض النصائح حول كيفية التعامل مع مسألة استخدام Flutter في تطبيق الهاتف المحمول التالي الخاص بي. إذا كانت مزايا Flutter يمكن أن توفر جميع الإمكانات التي يحتاجها التطبيق ، فسأختاره في لمح البصر.

هذا لأنه ، بصرف النظر عن المجالات القليلة التي يفتقر إليها Flutter حاليًا ، فإن جميع جوانبها الأخرى هي تلك التي أقدرها واعتمد عليها في تطوير وإطلاق تطبيقات Flutter الخمسة المختلفة في العام الماضي:

  • سهولة بدء Flutter
  • مكاسب السرعة التي يمكن الحصول عليها من استخدام إطار عمل تم تصميمه من الألف إلى الياء للتركيز على سرعة التطوير
  • النظام البيئي الغني لمكتبات Dart وحزم الجهات الخارجية المتوفرة بسهولة
  • طريقة Flutter المختلفة ولكنها مثمرة للغاية لتطوير التطبيقات باستخدام كل شيء هي نهج عنصر واجهة المستخدم

سيكون من الحكمة لمن يقدمون خدمات تطوير تطبيقات الأجهزة المحمولة أن يمنحوا Flutter نظرة جادة ، إذا لم يفعلوا ذلك بالفعل.

سأختتم بالإشارة إلى ميزة Flutter الأخيرة: فهي تحتوي على بعض من أفضل الوثائق لأي مكتبة أو إطار عمل عملت معه. من النادر أن أجد سؤال Flutter في google ولا تجاوب عليه صفحة من موقع Flutter الخاص.

الموضوعات ذات الصلة: برنامج Flutter التعليمي: كيفية إنشاء تطبيق Flutter الأول

شارة شريك Google Cloud.

كشريك Google Cloud Partner ، يتوفر خبراء Toptal المعتمدون من Google للشركات عند الطلب لأهم مشاريعهم.