أقسام الوصول السريع (مربع البحث)

📁 آخر الأخبار

من التعثّر إلى الإطلاق: مشاكل حقيقية واجهتني في FlutterFlow وحلول لم أجدها بسهولة

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

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

ربط FlutterFlow بـ Firebase: البداية التي كشفت حجم التعقيد

من أول الخطوات الأساسية لأي تطبيق ديناميكي هي ربطه بقاعدة بيانات، وغالبًا ما تكون Firebase هي الخيار الافتراضي. في FlutterFlow الأمر يبدو بسيطًا: تضيف مشروع Firebase، تربطه بالمشروع، وتنطلق.

لكن الواقع لم يكن بهذه السهولة.

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

في حالتي، كان التطبيق يظهر وكأنه متصل، لكن لا يتم جلب أي بيانات، ولا تعمل المصادقة، وكأن Firebase غير موجودة أصلًا.

بعد ساعات من المراجعة اكتشفت أن أغلب الشروحات تتجاهل نقطة مهمة:
إعدادات المشروع في Firebase Console نفسها، خاصة ما يتعلق بحزمة التطبيق (Package Name) وتطابقها الدقيق مع ما هو موجود في FlutterFlow.

أي اختلاف بسيط، حتى في حرف واحد، يجعل الربط غير فعّال تمامًا.

هنا فهمت أول درس مهم:
FlutterFlow يسهل الواجهة، لكنه لا يلغي تعقيدات البنية الخلفية.

مشكلة مفاتيح SHA1 وSHA256: العائق الذي لم يتحدث عنه أحد بوضوح

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

كانت الرسائل تشير إلى ضرورة إضافة مفاتيح SHA1 وSHA256.

المشكلة أن أغلب الشروحات تقول:
احصل عليها من جهازك وأضفها في Firebase”
لكن لا تشرح ماذا لو لم تكن لديك الأدوات أصلًا.

في حالتي لم يكن Java مثبتًا، وبالتالي لم يعمل أمر keytool الذي يعتمد عليه توليد المفاتيح.

اضطررت إلى:

تنزيل Java Development Kit
ضبط متغيرات البيئة يدويًا
تشغيل الأوامر من موجه الأوامر
ثم نسخ المفاتيح وربطها بالمشروع

عملية بدت في البداية وكأنها مخصصة للمطورين المحترفين فقط.

لكن بعد تنفيذها بشكل صحيح، اختفت أخطاء المصادقة تمامًا.

ما تعلمته هنا أن أدوات No-Code لا تعفيك من فهم أساسيات البرمجة الخلفية، خصوصًا عند التعامل مع الأمان والتوثيق.

لماذا لم تعمل ListView وQuery بدون تسجيل الدخول؟

هذه كانت من أكثر المشاكل إحباطًا بالنسبة لي.

أنشأت صفحة لعرض البيانات باستخدام ListView وربطتها بـ Query من قاعدة Firebase. التصميم جميل، والربط يبدو صحيحًا، لكن التطبيق يعرض صفحة فارغة.

لا أخطاء.
لا تحذيرات.
فقط فراغ.

بعد بحث طويل اكتشفت أمرًا مهمًا جدًا لا يتم شرحه بوضوح:

Firebase تطبق قواعد أمان تمنع قراءة البيانات افتراضيًا ما لم يكن المستخدم مصادقًا.

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

كان أمامي خياران:

إما تفعيل Authentication وربط كل مستخدم بالحساب
أو تعديل قواعد Firebase للسماح بالقراءة العامة بشكل مؤقت

بعد تجربة الأمرين فهمت أن FlutterFlow يعتمد بشكل مباشر على سياسات Firebase الأمنية، وليس على منطق التطبيق الظاهري فقط.

وهنا نصيحة عملية من تجربتي:
إذا واجهت صفحات فارغة بدون سبب واضح، فابدأ فورًا بمراجعة قواعد الأمان في Firebase.

الأزرار التي تظهر بدون خط: مشكلة لم أكن أتوقعها أبدًا




بعد تجاوز مشاكل الربط والبيانات، ظهرت مشكلة غريبة جدًا في واجهة المستخدم.

بعض الأزرار كانت تظهر بدون أي نص.

لا لون خط.
لا حروف.
فقط شكل الزر.

في البداية ظننت أن الخط غير مدعوم أو أن هناك خلل في التصميم.

لكن بعد اختبار التطبيق على عدة أجهزة اكتشفت أن المشكلة تظهر فقط عند بعض المستخدمين، وليس عندي.

السبب كان مرتبطًا بإعدادات تكبير النص (Text Scaling) في الهاتف.

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

الحل كان بسيطًا لكنه غير واضح:

تقييد حجم النص داخل الأزرار وتعطيل التأثر بتكبير النظام.

بعد هذا التعديل، اختفت المشكلة نهائيًا.

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

فشل النشر التلقائي من FlutterFlow إلى Google Play

المفترض أن FlutterFlow يوفر نشرًا مباشرًا إلى متجر Google Play.

في حالتي، العملية كانت تفشل في كل مرة بدون تفسير واضح.

قمت ب:

تجديد المفاتيح
إعادة ربط حساب Google Play
إعادة تصدير المشروع

ولا نتيجة.

في النهاية لجأت إلى الحل التقليدي:

تصدير ملف التطبيق يدويًا (AAB)
الدخول إلى Google Play Console
رفع الإصدار يدويًا
ضبط الإصدارات والإطلاق

ورغم أن العملية أطول، إلا أنها كانت أكثر استقرارًا وأقل أعطالًا.

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

ما الذي لا يخبرك به أغلب الشروحات عن FlutterFlow؟

من خلال هذه التجربة، خرجت بعدة حقائق أراها أساسية لأي شخص يبدأ:

FlutterFlow ليس بديلاً كاملًا عن فهم أساسيات Firebase
مشاكل الأمان والصلاحيات هي السبب الخفي لأغلب الأعطال
الأخطاء التي تظهر للمستخدمين تختلف عن تلك التي تظهر للمطور
النشر اليدوي أحيانًا أكثر أمانًا من الحلول التلقائية

أغلب المحتوى على الإنترنت يركز على كيف تبني بسرعة، لكنه لا يركز على كيف تحل عندما تتعطل الأمور.

وهذا الفرق هو ما يصنع مطورًا حقيقيًا، حتى داخل أدوات No-Code.

تجربتي الشخصية: هل كانت الرحلة تستحق كل هذا العناء؟

في منتصف هذه المشاكل، فكرت أكثر من مرة في التوقف.

كنت أقول لنفسي:
إذا كانت أدوات بدون كود كل هذا التعقيد، فكيف ستكون البرمجة التقليدية؟

لكن مع كل مشكلة كنت أحلها، شعرت أنني أفهم الأنظمة بشكل أعمق، لا فقط أضغط أزرارًا في واجهة جميلة.

تعلمت:

كيف تعمل Firebase فعليًا
كيف تؤثر الأذونات على البيانات
كيف تتفاعل التطبيقات مع إعدادات المستخدم
كيف تتم عملية النشر الاحترافية

والأهم من ذلك، نشرت أول تطبيق لي بنجاح.

ذلك الشعور لا يعوضه أي اختصار.

 الصعوبات كانت بوابة دخولي لعالم البرمجة الحقيقي

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

FlutterFlow لم يكن مجرد أداة بالنسبة لي، بل كان مدخلًا لفهم عالم تطوير التطبيقات بطريقة عملية.

المشاكل التي واجهتني لم تكن عوائق، بل دروسًا.

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

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


تعليقات