قبل أن تضغط على زر “نشر”، هناك خطوة حاسمة تُميّز بين تطبيق عادي وتطبيق احترافي: التحسين ( Flutter Optimization ).
فحجم التطبيق وسرعة تشغيله لا يقلان أهمية عن مظهره.
المستخدم لا يهتم بكيفية كتابتك للكود، بل يهتم بشيء واحد فقط:
هل التطبيق سريع وخفيف؟ ⚡
في هذا المقال، سنستعرض أهم استراتيجيات تحسين تطبيق Flutter قبل رفعه إلى المتاجر — من تقليل الحجم إلى تسريع الأداء عند التشغيل.
أولًا: لماذا يجب تحسين التطبيق قبل النشر؟
كل كيلوبايت وكل ثانية تحميل تُحدث فرقًا.
- تطبيق كبير الحجم = معدّل تنزيل أقل.
- تطبيق بطيء = مراجعات سلبية.
- تطبيق محسن = تجربة سلسة ومعدل بقاء أعلى للمستخدمين.
ثانيًا: تقليل حجم التطبيق
🔹 1. استخدم أوامر البناء المناسبة
لإنشاء نسخة مضغوطة فعليًا:
flutter build appbundle --release
أو لتقليل حجم APK:
flutter build apk --split-per-abi
هذا الأمر ينشئ عدة ملفات APK مخصصة لكل معمارية (armeabi-v7a, arm64-v8a, x86_64) بدلًا من ملف ضخم واحد.
🔹 2. إزالة الأكواد والموارد غير المستخدمة
شغّل:
flutter clean
flutter pub get
ثم فعّل تصغير الكود في build.gradle:
minifyEnabled true
shrinkResources true
يقوم هذا بحذف الملفات، الصور، والخطوط غير المستخدمة أثناء البناء.
🔹 3. ضغط الصور والأيقونات
- استخدم صيغة WebP بدلًا من PNG.
- استخدم أدوات مثل TinyPNG لتقليل الحجم.
- استخدم مكتبات مثل:
CachedNetworkImageلتحميل الصور مرة واحدة فقط وتخزينها مؤقتًا.
🔹 4. قلل عدد الخطوط والألوان
كل خط إضافي = زيادة في حجم التطبيق.
اجمع الخطوط الضرورية فقط، وضعها داخل مجلد /assets/fonts/.
ولا تنسَ حذف القيم الزائدة من pubspec.yaml.
🔹 5. استخدام split-debug-info
أحد أهم الأوامر لتقليل الحجم وتحسين الأداء:
flutter build appbundle --split-debug-info=build/symbols
يقوم بفصل معلومات التصحيح (debug symbols) من ملف النشر، مما يقلل الحجم بنسبة 20–30%.
ثالثًا: تحسين الأداء أثناء التشغيل
🔹 1. تجنب عمليات البناء الزائدة في واجهاتك
بدلًا من كتابة:
build(context) {
return SomeWidget();
}
في كل تحديث، استخدم:
const SomeWidget();
كلمة
constتساعد Flutter على عدم إعادة رسم الواجهة كل مرة.
🔹 2. استخدم Widgets أخف وزنًا
استبدل:
ListView.builderبـListView.separatedعند الحاجة إلى فواصل.setState()بـ state management مثلProviderأوRiverpod.- عناصر الصور الكبيرة بعناصر lazy loading.
🔹 3. تقليل استهلاك الذاكرة
- استخدم
dispose()لإغلاق الـ controllers وlisteners. - احذف الكائنات المؤقتة بعد استخدامها.
- لا تترك
Streamsمفتوحة بلا حاجة.
🔹 4. تقليل التعقيد في الرسوميات
- تجنب استخدام الظلال الثقيلة أو الحركات المعقدة.
- استخدم
RepaintBoundaryلعزل أجزاء متحركة من الواجهة. - جرّب تشغيل التطبيق في Profile mode لقياس الأداء:
flutter run --profile
رابعًا: أدوات تحليل الأداء
قبل النشر، اختبر أداء تطبيقك بأدوات Flutter الرسمية:
🔸 Flutter DevTools
أداة رسومية قوية تسمح لك بـ:
- قياس استهلاك CPU وRAM.
- تحليل زمن إعادة الرسم (Frame Rendering).
- اكتشاف Widgets كثيرة البناء.
افتحها عبر:
flutter pub global activate devtools
flutter pub global run devtools
🔸 Observatory
يمكنك مراقبة أداء التطبيق على الأجهزة الفعلية من المتصفح مباشرة عبر:
http://127.0.0.1:8181/
خامسًا: تحسين زمن الإقلاع (Startup Time)
- فعّل AOT Compilation عبر وضع Release.
- استخدم صورًا خفيفة في شاشة البداية (Splash screen).
- لا تُحمّل بيانات كثيرة في
main()— استخدم FutureBuilder بعد الإقلاع.
سادسًا: قياس النجاح
بعد تنفيذ التحسينات، اختبر الفرق قبل وبعد:
| المقياس | قبل التحسين | بعد التحسين |
|---|---|---|
| حجم التطبيق | 55MB | 24MB |
| زمن الفتح | 2.8 ثانية | 1.1 ثانية |
| استهلاك الذاكرة | 180MB | 90MB |
الأرقام تقريبية، لكنها توضح التأثير الكبير للتحسين الذكي قبل النشر.
الخلاصة
تحسين تطبيق Flutter ليس خطوة اختيارية — إنه ما يجعل تطبيقك احترافيًا وملائمًا للمستخدم النهائي.
كل ثانية تحميل توفرها، وكل ميغابايت تُقللها، تُترجم إلى تجربة أفضل ومراجعات أعلى.
وفي المقال القادم من السلسلة ( والأخير )، سنتحدث عن تحسين الأداء المتقدم (Performance Tuning)
— كيف تقيس وتصلح مشاكل الأداء الحقيقية باستخدام أدوات Flutter الاحترافية.
