Update: 2026-08-07 01:35:27

This commit is contained in:
Hamza-Ayed
2026-08-07 01:35:27 +03:00
parent 0cb1ab0ea3
commit 5b864e30df
11 changed files with 843 additions and 26 deletions
@@ -17,6 +17,14 @@ class TripData {
final double pickupLng;
final String? passengerAvatarUrl;
/// نوع الطلب: 'exclusive' خلال ثواني السبق الحصري، 'public' بعده،
/// و null في وضع البثّ الحر (عندها لا تظهر أي شارة).
final String? offerType;
/// ثواني السبق المتبقية. بعد انقضائها تقلب النافذة الشارة إلى "طلب عام"
/// من نفسها — النافذة لا تُغلق، فالسائق يظل قادراً على القبول.
final int offerExpiresIn;
TripData({
required this.tripId,
required this.passengerName,
@@ -28,6 +36,8 @@ class TripData {
required this.pickupLat,
required this.pickupLng,
this.passengerAvatarUrl,
this.offerType,
this.offerExpiresIn = 0,
});
Map<String, dynamic> toMap() => {
@@ -41,6 +51,8 @@ class TripData {
'pickupLat': pickupLat,
'pickupLng': pickupLng,
'passengerAvatarUrl': passengerAvatarUrl ?? '',
'offerType': offerType ?? '',
'offerExpiresIn': offerExpiresIn,
};
factory TripData.fromMap(Map<String, dynamic> map) => TripData(
@@ -51,6 +63,10 @@ class TripData {
distanceKm: (map['distanceKm'] ?? 0.0).toDouble(),
estimatedFare: (map['estimatedFare'] ?? 0.0).toDouble(),
estimatedMinutes: map['estimatedMinutes'] ?? 0,
offerType: (map['offerType'] ?? '').toString().isEmpty
? null
: map['offerType'].toString(),
offerExpiresIn: int.tryParse('${map['offerExpiresIn'] ?? 0}') ?? 0,
pickupLat: (map['pickupLat'] ?? 0.0).toDouble(),
pickupLng: (map['pickupLng'] ?? 0.0).toDouble(),
passengerAvatarUrl: map['passengerAvatarUrl'],