شرح Firebase Performance في Flutter وربط Dio باستخدام firebase_performance_dio لمراقبة الأداء تلقائيًا
أداء التطبيق أصبح واحدًا من أهم العوامل المؤثرة في نجاح أي مشروع.
المستخدمون اليوم أكثر حساسية تجاه:
- بطء تحميل الشاشات
- تأخر استجابة الشبكة
- زمن الإقلاع الطويل
- الانتقال البطيء بين الصفحات
وفي كثير من الحالات قد يؤدي تأخر بسيط في التحميل إلى انخفاض معدل الاحتفاظ بالمستخدمين أو ظهور تقييمات سلبية داخل المتاجر.
هنا يأتي دور Firebase Performance Monitoring والذي يوفر نظامًا متكاملًا لمراقبة أداء التطبيقات داخل Flutter.
يسمح Firebase Performance بمراقبة:
- زمن بدء التطبيق
- سرعة الشبكة
- العمليات الحرجة داخل التطبيق
- طلبات HTTP
- زمن تنفيذ أجزاء الكود
وفي هذا المقال سنتعرف على طريقة دمج Firebase Performance داخل Flutter وربط Dio باستخدام مكتبة firebase_performance_dio لالتقاط المقاييس تلقائيًا.
ما هي الحزم المستخدمة؟
سنستخدم حزمتين رئيسيتين:
firebase_performance
الإضافة الرسمية من Firebase الخاصة بمراقبة الأداء داخل Flutter.
توفر:
- Performance Traces
- HTTP Metrics
- Startup Monitoring
- Custom Measurements
firebase_performance_dio
تعتبر Middleware أو Interceptor خاص بمكتبة Dio.
تقوم بإرسال مقاييس الطلبات إلى Firebase تلقائيًا دون الحاجة لكتابة:
HttpMetric
وتلتقط:
- زمن الطلب
- حجم البيانات
- حالة الاستجابة
- Latency
وهي مناسبة جدًا للتطبيقات التي تعتمد على Dio بشكل أساسي.
المتطلبات قبل البدء
قبل إضافة Firebase Performance تأكد من وجود:
- مشروع Flutter جاهز
- ربط Firebase مع Android و iOS
- إضافة firebase_options.dart
- تهيئة Firebase داخل المشروع
كما سنحتاج الحزم التالية:
- firebase_core
- firebase_performance
- dio
- firebase_performance_dio
تثبيت الحزم
أضف أولًا:
firebase_performance: ^0.11.0+1
ثم:
firebase_performance_dio: ^0.7.1
بعد ذلك نفذ:
flutter pub get
تهيئة Firebase Performance داخل Flutter
بعد ربط Firebase نبدأ بتفعيل مراقبة الأداء.
بمجرد التفعيل سيبدأ Firebase تلقائيًا بتسجيل:
- Startup Time
- Network Requests
- Basic Performance Metrics
مثال التهيئة:
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_performance/firebase_performance.dart';
import 'firebase_options.dart';
Future<void> main() async {
WidgetsFlutterBinding
.ensureInitialized();
await Firebase.initializeApp(
options:
DefaultFirebaseOptions
.currentPlatform
);
await FirebasePerformance
.instance
.setPerformanceCollectionEnabled(
true
);
runApp(
const MyApp()
);
}
بعد فترة قصيرة من الاستخدام ستبدأ المقاييس بالظهور داخل Firebase Console.
قياس زمن تنفيذ جزء معين من الكود
في بعض الأحيان نحتاج لمراقبة عملية محددة داخل التطبيق.
مثل:
- تحميل ملفات كبيرة
- تحويل البيانات
- معالجة الصور
- جلب بيانات معقدة
هنا يمكن استخدام:
Trace
مثال:
import
'package:firebase_performance/
firebase_performance.dart';
Future<void>
loadLargeData() async {
final perf =
FirebasePerformance.instance;
final Trace trace =
perf.newTrace(
'load_large_data_trace'
);
await trace.start();
await Future.delayed(
const Duration(
seconds: 2
)
);
await trace.stop();
}
كل Trace يمثل عملية واحدة لها:
- بداية
- نهاية
- زمن تنفيذ
ولإنشاء قياسات متعددة يفضل استخدام أسماء مختلفة لكل عملية.
ربط Dio مع firebase_performance_dio
إذا كان التطبيق يعتمد على Dio بشكل كبير فهنا تظهر قوة:
firebase_performance_dio
لأنها تقوم بالتقاط:
- HTTP Status
- Request Duration
- Response Size
- Network Latency
كل ذلك تلقائيًا دون كتابة كود إضافي.
مثال الربط:
import 'package:dio/dio.dart';
import
'package:firebase_performance_dio/
firebase_performance_dio.dart';
final dio = Dio();
final performanceInterceptor =
DioFirebasePerformanceInterceptor();
dio.interceptors.add(
performanceInterceptor
);
final response = await dio.get(
'https://api.example.com/data'
);
بعد إضافة الـ Interceptor تبدأ المقاييس بالظهور مباشرة داخل Firebase Console.
مشاكل شائعة وحلول سريعة
لا تظهر البيانات داخل Firebase Console
إذا لم تظهر المقاييس تأكد من:
- تفعيل:
setPerformanceCollectionEnabled(true) - وجود مستخدمين حقيقيين
- تشغيل التطبيق على جهاز فعلي
بعض المقاييس لا تظهر من المحاكيات.
أريد تتبع Endpoint معين داخل Dio
يمكن استخدام:
RequestOptions.extra
لإضافة Attributes مخصصة أثناء إنشاء المقاييس.
وهذا يسمح بتجميع الطلبات حسب:
- Endpoint
- Feature
- Module
أفضل الممارسات
- لا تنشئ Trace لكل عملية صغيرة.
- ركز على العمليات الحرجة.
- استخدم أسماء واضحة للـ Traces.
- راقب الطلبات البطيئة فقط.
- اجمع بين Performance و Crashlytics.
- اختبر الأداء على أجهزة فعلية.
الخلاصة
يوفر Firebase Performance طريقة قوية لمراقبة أداء تطبيقات Flutter دون تعقيد كبير.
فهو يساعد على تتبع:
- وقت الإقلاع
- زمن الشبكة
- الأجزاء الحرجة
- طلبات HTTP
ومع إضافة firebase_performance_dio يصبح دمج Dio أسهل بكثير عبر التقاط المقاييس تلقائيًا دون الحاجة لكتابة منطق إضافي.
وفي التطبيقات الكبيرة يمكن أن تكون هذه البيانات عاملًا أساسيًا في تحسين الأداء وتجربة المستخدم وتقليل المشكلات قبل وصولها للمستخدم النهائي.
رابط المكتبة
firebase_performance_dio
لمزيد من المقالات : تعلم كيفية ضبط حجم الخط بشكل مثالي في Flutter
لمزيد من المقالات : لا تحدث Flutter مجددًا بدون قراءة هذا! كيف تدير 5 إصدارات SDK على جهاز واحد بسهولة؟






