Files
intaleq_driver/plans/map_driver_controller_review.md

3.1 KiB

تقرير مراجعة كلاس MapDriverController - النسخة النهائية

الإصلاحات المطبقة بالكامل (15 إصلاحاً)

المراجعة الأولى (V1) — 12 إصلاحاً

الكود المشكلة الحل الحالة
C-1 updateLocation() for loop تسبب تسرب ذاكرة Timer.periodic مع startUpdateLocationTimer و stopUpdateLocationTimer
C-2 _validateTripDistance() تُرجع قبل إغلاق الديالوج Completer<bool> مع Deadlock protection
C-3 تكرار كود تحليل المسافة بين finishRideFromDriver و _validateTripDistance دالة مشتركة _parseDistanceToMeters()
C-4 myLocation لا تتحدث في المستمع الأساسي إضافة myLocation = newLoc في _handleLocationUpdate
M-1 اسم jitterMeters مضلّل (القيمة بالكيلومتر) تغيير إلى jitterKm = 0.01
M-2 Variable Shadowing في markDriverAsArrived تغيير المتغير إلى distToPassenger
M-3 كود ميت _performanceReadings و _hasMadeDecision إزالة كاملة
M-4 تكرار checkForNextStep و _checkNavigationStep دمج الدالتين + إزالة الكود المعلّق القديم
M-5 disposeEverything تستدعاء onClose مباشرة استخدام _stopAllServices بدلاً منها
M-6 وحدات غير واضحة في _calculateWaitingCost تعليق توضيحي distanceBetweenDriverAndPassengerWhenConfirm بالكيلومتر
N-1 رابط Google Maps & بدلاً من ? تصحيح المعاملات
N-5 getLocationArea تكتب في box بدون update() إضافة update() بعد كل كتابة

المراجعة الثانية (V2) — 3 إصلاحات إضافية

الكود المشكلة الحل الحالة
C-2 v2 Completer Deadlock عند إغلاق الديالوج بزر الرجوع استخدام Get.dialog مع .then() callback يُكمل بـ false
C-3 v2 ديالوج مكرر عند إنهاء الرحلة بالزر تمرير isFromSlider: true بعد التأكيد لتخطي الديالوج الثاني
M-7 Null checks على String غير قابلة للـ null استخدام isNotEmpty بدلاً من != null

الإصلاحات الإضافية المطبقة

  • تنظيف جميع التايمرات في onClose() و _stopAllServices()
  • إزالة @override المكرر
  • إضافة تعليقات توضيحية [Fix Code] لكل إصلاح

الإصلاحات المتبقية (تحسينات منخفضة الأولوية) ⚠️

الكود الوصف الأولوية
N-4 تحويل step0..step4 إلى List<String> (تحسين تجاري) منخفض
N-2 استبدال Future.delayed في argumentLoading بـ Completer (تحسين أداء) منخفض