import 'package:flutter/material.dart'; import 'package:get/get.dart'; /// شارة «راكب بلا إنترنت». /// /// الراكب طلب رحلته برسالة نصية إلى رقم الشركة، لا من التطبيق. وهذا /// يقلب طريقة التعامل معه رأساً على عقب: /// /// • لن يصله شيء في التطبيق — لا محادثة ولا إشعار «وصل السائق» /// • لن يرى السائق يقترب على الخريطة، فلا يعرف أين صار /// • لن يستطيع تعديل وجهته ولا إلغاءها من التطبيق /// /// السائق الذي لا يعرف هذا سيرسل رسالة داخل التطبيق، ينتظر رداً لن /// يأتي، ثم يُلغي ظناً أن الراكب غير جاد. لذلك الشارة تصرّح بالمطلوب /// صراحةً — «اتصل به» — لا تكتفي بوصف الحالة. /// /// المصدر: حقل `is_sms` في حمولة الرحلة، يضيفه buildMarketPayload في /// backend/ride/rides/add_ride.php. غيابه = رحلة عادية بلا شارة. class SmsRideBadge extends StatelessWidget { final Map rideInfo; /// حجم مصغّر لبطاقات القائمة. final bool compact; const SmsRideBadge({ super.key, required this.rideInfo, this.compact = false, }); static bool isSmsRide(Map? info) { final v = info?['is_sms']?.toString(); return v == '1' || v == 'true'; } @override Widget build(BuildContext context) { if (!isSmsRide(rideInfo)) return const SizedBox.shrink(); // برتقالي محذّر — يفترق عن بنفسجي «المجدولة» بوضوح، فالشارتان قد // تظهران متجاورتين ولا يجوز أن تلتبسا. const color = Color(0xFFE07B39); return Container( padding: EdgeInsets.symmetric( horizontal: compact ? 8 : 12, vertical: compact ? 4 : 6, ), decoration: BoxDecoration( color: color.withOpacity(0.12), borderRadius: BorderRadius.circular(compact ? 12 : 20), border: Border.all(color: color.withOpacity(0.5)), ), child: Row( mainAxisSize: MainAxisSize.min, children: [ Icon(Icons.phone_in_talk, color: color, size: compact ? 14 : 16), const SizedBox(width: 4), Text( compact ? 'No internet — call'.tr : 'Passenger offline — call them'.tr, style: TextStyle( color: color, fontSize: compact ? 11 : 13, fontWeight: FontWeight.bold, ), ), ], ), ); } }