Update: 2026-06-11 13:47:39

This commit is contained in:
Hamza-Ayed
2026-06-11 13:47:40 +03:00
parent 977adfe99d
commit c5170a88d2
516 changed files with 3654 additions and 3321 deletions

View File

@@ -1,7 +1,7 @@
class AppInformation {
static const String companyName = 'Intaleq';
static const String appName = 'Intaleq DRIVER';
static const String appVersion = 'Intaleq DRIVER';
static const String companyName = 'Siro';
static const String appName = 'Siro DRIVER';
static const String appVersion = 'Siro DRIVER';
static const String phoneNumber = '962798583052';
static const String linkedInProfile =
'https://www.linkedin.com/in/hamza-ayed/';
@@ -16,7 +16,7 @@ class AppInformation {
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Intaleq - Privacy Policy & Terms of Use</title>
<title>Siro - Privacy Policy & Terms of Use</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
@@ -71,11 +71,11 @@ class AppInformation {
</div>
<h2>1. Introduction and Acceptance</h2>
<p>By downloading, registering, or using the Intaleq application ("App"), you agree to be bound by this Privacy Policy and our Terms of Use. If you do not agree, you must stop using the App immediately. Your continued use constitutes acceptance of these terms and any future updates.</p>
<p>By downloading, registering, or using the Siro application ("App"), you agree to be bound by this Privacy Policy and our Terms of Use. If you do not agree, you must stop using the App immediately. Your continued use constitutes acceptance of these terms and any future updates.</p>
<h2>2. Definitions</h2>
<ul>
<li><strong>"Intaleq", "we", "us":</strong> Refers to the Intaleq for Ride Hailing company, Damascus Syria (Owner & operator), which provides the technology platform.</li>
<li><strong>"Siro", "we", "us":</strong> Refers to the Siro for Ride Hailing company, Damascus Syria (Owner & operator), which provides the technology platform.</li>
<li><strong>"Driver":</strong> An independent service provider who uses the App to offer transportation services.</li>
<li><strong>"Passenger", "you":</strong> An individual who uses the App to request transportation services.</li>
<li><strong>"Services":</strong> The connection between Passengers and Drivers facilitated by our App.</li>
@@ -136,7 +136,7 @@ class AppInformation {
</ul>
<h2>5. Disclaimer of Liability</h2>
<p>The App is provided "as is". Intaleq is an intermediary platform and is not liable for the actions of Drivers or Passengers, accidents, delays, or any disputes between users. Our liability is limited to the fullest extent permitted by law.</p>
<p>The App is provided "as is". Siro is an intermediary platform and is not liable for the actions of Drivers or Passengers, accidents, delays, or any disputes between users. Our liability is limited to the fullest extent permitted by law.</p>
<h2>6. Policy Updates</h2>
<p>We may update these terms. If we make significant changes, we will notify you within the App. You will be required to review and accept the new terms to continue using the Services, ensuring your consent is active and informed.</p>
@@ -155,7 +155,7 @@ class AppInformation {
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>انطلق - سياسة الخصوصية وشروط الاستخدام</title>
<title>سيرو - سياسة الخصوصية وشروط الاستخدام</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
@@ -211,11 +211,11 @@ class AppInformation {
</div>
<h2>1. المقدمة والقبول</h2>
<p>عبر تحميل أو تسجيل أو استخدام تطبيق "انطلق" ("التطبيق")، فإنك توافق على الالتزام بسياسة الخصوصية وشروط الاستخدام هذه. إذا كنت لا توافق، يجب عليك التوقف فورًا عن استخدام التطبيق. استمرارك في الاستخدام يُعد قبولاً لهذه الشروط وأي تحديثات مستقبلية لها.</p>
<p>عبر تحميل أو تسجيل أو استخدام تطبيق "سيرو" ("التطبيق")، فإنك توافق على الالتزام بسياسة الخصوصية وشروط الاستخدام هذه. إذا كنت لا توافق، يجب عليك التوقف فورًا عن استخدام التطبيق. استمرارك في الاستخدام يُعد قبولاً لهذه الشروط وأي تحديثات مستقبلية لها.</p>
<h2>2. التعريفات</h2>
<ul>
<li><strong>"انطلق"، "نحن":</strong> تشير إلى شركة انطلق لنقل الركاب، دمشق سوريا (مالك ومشغل التطبيق)، التي توفر المنصة التقنية.</li>
<li><strong>"سيرو"، "نحن":</strong> تشير إلى شركة سيرو لنقل الركاب، دمشق سوريا (مالك ومشغل التطبيق)، التي توفر المنصة التقنية.</li>
<li><strong>"السائق":</strong> مقدم خدمة مستقل يستخدم التطبيق لتقديم خدمات النقل.</li>
<li><strong>"الراكب"، "أنت":</strong> الفرد الذي يستخدم التطبيق لطلب خدمات النقل.</li>
<li><strong>"الخدمات":</strong> عملية الربط بين الركاب والسائقين التي يسهلها تطبيقنا.</li>
@@ -276,7 +276,7 @@ class AppInformation {
</ul>
<h2>5. إخلاء المسؤولية</h2>
<p>يتم تقديم التطبيق "كما هو". "انطلق" هي منصة وسيطة وليست مسؤولة عن تصرفات السائقين أو الركاب، أو الحوادث، أو التأخير، أو أي نزاعات بين المستخدمين. مسؤوليتنا محدودة إلى أقصى حد يسمح به القانون.</p>
<p>يتم تقديم التطبيق "كما هو". "سيرو" هي منصة وسيطة وليست مسؤولة عن تصرفات السائقين أو الركاب، أو الحوادث، أو التأخير، أو أي نزاعات بين المستخدمين. مسؤوليتنا محدودة إلى أقصى حد يسمح به القانون.</p>
<h2>6. تحديثات السياسة</h2>
<p>قد نقوم بتحديث هذه الشروط. في حال إجراء تغييرات جوهرية، سنقوم بإعلامك داخل التطبيق. سيُطلب منك مراجعة الشروط الجديدة وقبولها لمواصلة استخدام الخدمات، لضمان أن موافقتك فعالة ومبنية على معرفة.</p>

View File

@@ -10,22 +10,22 @@ class AppLink {
static const String appDomain = 'siromove.com';
static String locationServer =
'https://location.intaleq.xyz/intaleq/ride/location';
'https://location.intaleq.xyz/siro/ride/location';
static String locationServerSide =
'https://location.intaleq.xyz/intaleq/ride/location';
'https://location.intaleq.xyz/siro/ride/location';
static String mapSaasRoute = 'https://map-saas.intaleqapp.com/api/maps/route';
static String mapSaasPlaces =
'https://map-saas.intaleqapp.com/api/geocoding/places';
static const String routeApiBaseUrl =
"https://routesjo.intaleq.xyz/route/v1/driving";
static final String endPoint = 'https://api.intaleq.xyz/intaleq_v3';
static final String syria = 'https://syria.intaleq.xyz/intaleq';
static final String syria = 'https://syria.intaleq.xyz/siro';
static final String server = endPoint;
///=================ride==========================///
///https://api.intaleq.xyz/intaleq/ride
///https://api.intaleq.xyz/siro/ride
static String ride = '$server/ride';
static String rideServer = 'https://rides.intaleq.xyz/intaleq/ride';
static String rideServer = 'https://rides.intaleq.xyz/siro/ride';
///mapOSM = 'https://routesy.intaleq.xyz'
static String mapOSM = 'https://routesy.intaleq.xyz';
@@ -95,11 +95,16 @@ class AppLink {
"$seferCairoServer/ride/driverWallet/getDriverDetails.php";
// ================= Gamification Endpoints =================
static String getWeeklyAggregate = "$endPoint/ride/gamification/getWeeklyAggregate.php";
static String getLeaderboard = "$endPoint/ride/gamification/getLeaderboard.php";
static String claimChallengeReward = "$endPoint/ride/gamification/claimChallengeReward.php";
static String getReferralStats = "$endPoint/ride/gamification/getReferralStats.php";
static String getDriverBehavior = "$endPoint/ride/gamification/getDriverBehavior.php";
static String getWeeklyAggregate =
"$endPoint/ride/gamification/getWeeklyAggregate.php";
static String getLeaderboard =
"$endPoint/ride/gamification/getLeaderboard.php";
static String claimChallengeReward =
"$endPoint/ride/gamification/claimChallengeReward.php";
static String getReferralStats =
"$endPoint/ride/gamification/getReferralStats.php";
static String getDriverBehavior =
"$endPoint/ride/gamification/getDriverBehavior.php";
static String getDriverWeekPaymentMove =
"$walletDriver/getDriverWeekPaymentMove.php";
static String getDriversWallet = "$walletDriver/get.php";

View File

@@ -12,13 +12,13 @@ List<String> syrianDriverMessages = [
"رزقتك جاهزة: 💸 لا تخلّي الزباين يستنّوا، افتح التطبيق وخليك متأهّب.",
// --- التقدير والشكر ---
"شكراً إلك: 🙏 إنت مو بس سائق، إنت أساس نجاح تطبيق انطلق.",
"شكراً إلك: 🙏 إنت مو بس سائق، إنت أساس نجاح تطبيق سيرو.",
"نفتخر فيك: 🌟 الكباتن متلك هنن يلي رافعين اسمنا بالعالي.",
"أداء ممتاز: 👍 استمر بنفس الروح الحلوة، زباينك مبسوطين منك.",
"نجاح مشترك: 🗺️ كل توصيلة بتعملها بتكبر فيها شركتنا وانت كمان.",
// --- التحفيز والتشجيع ---
"صباح النشاط: ☀️ بلّش نهارك بطاقة إيجابية وانطلق لتكسب أكتر.",
"صباح النشاط: ☀️ بلّش نهارك بطاقة إيجابية وسيرو لتكسب أكتر.",
"كل مشوار فرصة: 🏁 لا توقف، الطريق لإلك والنجاح ناطرك.",
"يوم مربح: 💼 السوق ناشط اليوم، لا تفوّت الفرصة!",
"جاهز للطلب الجاي: 🔔 الزبون الجاي ممكن يكون أوفر ممتاز، خليك مستعد.",

View File

@@ -40,9 +40,9 @@ class InviteController extends GetxController {
Future<void> shareDriverCode() async {
if (driverCouponCode != null) {
final String shareText =
'''Join Intaleq as a driver using my referral code!
'''Join Siro as a driver using my referral code!
Use code: $driverCouponCode
Download the Intaleq Driver app now and earn rewards!
Download the Siro Driver app now and earn rewards!
''';
await Share.share(shareText);
}
@@ -50,9 +50,9 @@ Download the Intaleq Driver app now and earn rewards!
Future<void> sharePassengerCode() async {
if (couponCode != null) {
final String shareText = '''Get a discount on your first Intaleq ride!
final String shareText = '''Get a discount on your first Siro ride!
Use my referral code: $couponCode
Download the Intaleq app now and enjoy your ride!
Download the Siro app now and enjoy your ride!
''';
await Share.share(shareText);
}
@@ -529,15 +529,15 @@ Download the Intaleq app now and enjoy your ride!
if (response != 'failure') {
var d = (response);
mySnackbarSuccess('Invite sent successfully'.tr);
String message = '${'*Intaleq DRIVER CODE*'.tr}\n\n'
String message = '${'*Siro DRIVER CODE*'.tr}\n\n'
'${"Use this code in registration".tr}\n'
'${"To get a gift for both".tr}\n\n'
'${"The period of this code is 24 hours".tr}\n\n'
'${'before'.tr} *${d['message']['expirationTime'].toString()}*\n\n'
'_*${d['message']['inviteCode'].toString()}*_\n\n'
'${"Install our app:".tr}\n'
'*Android:* https://play.google.com/store/apps/details?id=com.intaleq_driver \n\n\n'
'*iOS:* https://apps.apple.com/st/app/intaleq-driver/id6482995159';
'*Android:* https://play.google.com/store/apps/details?id=com.siro_driver \n\n\n'
'*iOS:* https://apps.apple.com/st/app/siro-driver/id6482995159';
launchCommunication('whatsapp', formattedPhoneNumber, message);
invitePhoneController.clear();
@@ -578,7 +578,7 @@ Download the Intaleq app now and enjoy your ride!
var d = response;
mySnackbarSuccess('Invite sent successfully'.tr);
String message = '${'*Intaleq APP CODE*'.tr}\n\n'
String message = '${'*Siro APP CODE*'.tr}\n\n'
'${"Use this code in registration".tr}\n\n'
'${"To get a gift for both".tr}\n\n'
'${"The period of this code is 24 hours".tr}\n\n'
@@ -587,8 +587,8 @@ Download the Intaleq app now and enjoy your ride!
'${"Quick Invite Link:".tr}\n'
'https://${AppLink.appDomain}/?inviteCode=${d['message']['inviteCode'].toString()}\n\n'
'${"Install our app:".tr}\n'
'*Android:* https://play.google.com/store/apps/details?id=com.Intaleq.intaleq\n\n\n'
'*iOS:* https://apps.apple.com/st/app/intaleq-rider/id6748075179';
'*Android:* https://play.google.com/store/apps/details?id=com.Siro.siro\n\n\n'
'*iOS:* https://apps.apple.com/st/app/siro-rider/id6748075179';
launchCommunication('whatsapp', formattedPhoneNumber, message);
invitePhoneController.clear();

View File

@@ -92,13 +92,13 @@ class PhoneAuthHelper {
if (response != 'failure') {
final data = (response);
Log.print('data: ${data}');
// if (data['status'] == 'success') {
mySnackbarSuccess('An OTP has been sent to your number.'.tr);
return true;
// } else {
// mySnackeBarError(data['message'] ?? 'Failed to send OTP.');
// return false;
// }
if (data['status'] == 'success') {
mySnackbarSuccess('An OTP has been sent to your number.'.tr);
return true;
} else {
mySnackeBarError(data['message'] ?? 'Failed to send OTP.'.tr);
return false;
}
} else {
mySnackeBarError('Server error. Please try again.'.tr);
return false;

View File

@@ -680,7 +680,7 @@ class RegistrationController extends GetxController {
// isLoading.value = true;
// final uri = Uri.parse(
// 'https://intaleq.xyz/intaleq/auth/syria/driver/register_driver_and_car.php',
// 'https://intaleq.xyz/siro/auth/syria/driver/register_driver_and_car.php',
// );
// final client = http.Client();

View File

@@ -4,7 +4,7 @@ import 'package:get/get.dart'; // للترجمة .tr
class NotificationService {
static const String _serverUrl =
'https://api.intaleq.xyz/intaleq/ride/firebase/send_fcm.php';
'https://api.intaleq.xyz/siro/ride/firebase/send_fcm.php';
static Future<void> sendNotification({
required String target,

View File

@@ -67,8 +67,8 @@ class AppUpdateController extends GetxController {
void _showStoreUpdateDialog() {
final String storeUrl = Platform.isAndroid
? 'https://play.google.com/store/apps/details?id=com.intaleq_driver'
: 'https://apps.apple.com/jo/app/intaleq-driver/id6482995159';
? 'https://play.google.com/store/apps/details?id=com.siro_driver'
: 'https://apps.apple.com/jo/app/siro-driver/id6482995159';
Get.defaultDialog(
title: "تحديث جديد متوفر".tr,

View File

@@ -47,8 +47,8 @@ Future<String> getPackageInfo() async {
void showUpdateDialog(BuildContext context) {
final String storeUrl = Platform.isAndroid
? 'https://play.google.com/store/apps/details?id=com.intaleq_driver'
: 'https://apps.apple.com/jo/app/intaleq-driver/id6482995159';
? 'https://play.google.com/store/apps/details?id=com.siro_driver'
: 'https://apps.apple.com/jo/app/siro-driver/id6482995159';
showGeneralDialog(
context: context,

View File

@@ -7,7 +7,7 @@ import '../../main.dart';
class SecurityChecks {
static const platform = MethodChannel(
'com.intaleq_driver/security'); // Choose a unique channel name
'com.siro.siro_driver/security'); // Choose a unique channel name
static Future<bool> isDeviceCompromised() async {
try {

View File

@@ -136,13 +136,13 @@ class ReferralController extends GetxController {
}
String get shareMessage {
final appName = 'Intaleq';
return 'Join $appName as a driver! Use my code: $referralCode\nDownload: https://intaleq.app/driver?ref=$referralCode';
final appName = 'Siro';
return 'Join $appName as a driver! Use my code: $referralCode\nDownload: https://siro.app/driver?ref=$referralCode';
}
String get shareMessagePassenger {
final appName = 'Intaleq';
return 'Get a ride with $appName! Use my code: $referralCode for a discount.\nDownload: https://intaleq.app?ref=$referralCode';
final appName = 'Siro';
return 'Get a ride with $appName! Use my code: $referralCode for a discount.\nDownload: https://siro.app?ref=$referralCode';
}
int get totalReferrals => totalDriverReferrals + totalPassengerReferrals;

View File

@@ -99,7 +99,7 @@ class HomeCaptainController extends GetxController {
print("🚀 [Heatmap] Fetching live data...");
// استخدم الرابط المباشر لملف JSON لسرعة قصوى
final String jsonUrl =
"https://ride.intaleq.xyz/intaleq/ride/heatmap_data.json";
"https://ride.intaleq.xyz/siro/ride/heatmap_data.json";
try {
// نستخدم timestamp لمنع الكاش من الموبايل نفسه
@@ -495,7 +495,7 @@ class HomeCaptainController extends GetxController {
update();
}
// late IntaleqMapController mapHomeCaptainController;
// late SiroMapController mapHomeCaptainController;
IntaleqMapController? mapHomeCaptainController;
LatLng? _lastCameraLoc; // لتتبع آخر موقع حرك الكاميرا

View File

@@ -23,6 +23,7 @@ import '../../../constant/country_polygons.dart';
import '../../../constant/links.dart';
import '../../../constant/table_names.dart';
import '../../../env/env.dart';
import '../../../views/home/Captin/orderCaptin/marker_generator.dart';
import '../../../main.dart';
import '../../../print.dart';
import '../../../views/Rate/rate_passenger.dart';
@@ -51,6 +52,7 @@ class MapDriverController extends GetxController
InlqBitmap passengerIcon = InlqBitmap.defaultMarker;
InlqBitmap startIcon = InlqBitmap.defaultMarker;
InlqBitmap endIcon = InlqBitmap.defaultMarker;
InlqBitmap? walkIcon;
final List<LatLng> polylineCoordinates = [];
final List<LatLng> polylineCoordinatesDestination = [];
List<Polyline> polyLines = [];
@@ -264,6 +266,8 @@ class MapDriverController extends GetxController
);
}
_updatePassengerWalkLine();
Log.print(
"🔄 [onMapCreated] Redrawn ${polyLines.length} polylines after map rebuild.");
update();
@@ -297,6 +301,8 @@ class MapDriverController extends GetxController
});
}
int _walkLineUpdateCounter = 0;
Future<void> startListeningStepNavigation() async {
// Cancel any previous listener
_navigationTimer?.cancel();
@@ -343,6 +349,12 @@ class MapDriverController extends GetxController
if (upcomingPathPoints.isNotEmpty) {
_updateTraveledPolylineSmart(myLocation);
}
// تحديث خط المشي المنقط كل 3 ثوانٍ أثناء التنقل (كل 6 دورات × 500ms)
_walkLineUpdateCounter++;
if (_walkLineUpdateCounter % 6 == 0) {
_updatePassengerWalkLine();
}
if (isCameraLocked) {
final double bearing = speedKmh > 5 ? heading : 0.0;
_animateCameraToNavigationMode(newLoc, bearing);
@@ -1841,7 +1853,7 @@ class MapDriverController extends GetxController
box.write(BoxName.countryCode, 'Jordan');
update(); // [Fix N-5]
// box.write(BoxName.serverChosen,
// AppLink.IntaleqSyriaServer); // مثال: اختر سيرفر سوريا للبيانات
// AppLink.SiroSyriaServer); // مثال: اختر سيرفر سوريا للبيانات
return 'Jordan';
}
@@ -1951,6 +1963,8 @@ class MapDriverController extends GetxController
),
);
_updatePassengerWalkLine();
// د) معالجة الخطوات (Instructions) للسيرفر الموحد
final List<dynamic> instructions = response['instructions'] ?? [];
if (instructions.isNotEmpty) {
@@ -2309,15 +2323,30 @@ class MapDriverController extends GetxController
southwest: southwest,
);
// Fit the camera to the bounds
var cameraUpdate = CameraUpdate.newLatLngBounds(
boundsData,
left: 140,
top: 140,
right: 140,
bottom: 140,
);
safeAnimateCamera(cameraUpdate);
final latDiff =
(boundsData.northeast.latitude - boundsData.southwest.latitude).abs();
final lngDiff =
(boundsData.northeast.longitude - boundsData.southwest.longitude).abs();
if (latDiff < 0.0001 || lngDiff < 0.0001) {
final center = LatLng(
(boundsData.northeast.latitude + boundsData.southwest.latitude) / 2,
(boundsData.northeast.longitude + boundsData.southwest.longitude) / 2,
);
safeAnimateCamera(CameraUpdate.newCameraPosition(
CameraPosition(target: center, zoom: 17),
));
} else {
// Fit the camera to the bounds
var cameraUpdate = CameraUpdate.newLatLngBounds(
boundsData,
left: 140,
top: 140,
right: 140,
bottom: 140,
);
safeAnimateCamera(cameraUpdate);
}
}
void changePassengerInfoWindow() {
@@ -2539,6 +2568,10 @@ class MapDriverController extends GetxController
addCustomPassengerIcon();
addCustomStartIcon();
addCustomEndIcon();
MarkerGenerator.createWalkMarker().then((icon) {
walkIcon = icon;
update();
});
if (!Get.isRegistered<TextToSpeechController>()) {
Get.put(TextToSpeechController(), permanent: true);
@@ -2575,7 +2608,8 @@ class MapDriverController extends GetxController
}
/// [Fix C-4] تحديث myLocation في المستمع الأساسي
void handleLocationUpdateFromCentral(LatLng newLoc, double posSpeed, double posHeading) {
void handleLocationUpdateFromCentral(
LatLng newLoc, double posSpeed, double posHeading) {
myLocation = newLoc; // ← [Fix C-4] تحديث الموقع الفوري
_oldLoc = smoothedLocation ?? newLoc;
_targetLoc = newLoc;
@@ -2763,6 +2797,7 @@ class MapDriverController extends GetxController
),
);
_updatePassengerWalkLine();
update();
}
}
@@ -2773,6 +2808,70 @@ class MapDriverController extends GetxController
// [Fix 1] إعادة تشغيل المستمع الأساسي للحركة السلسة بعد إيقاف الملاحة.
_startLocationListening();
}
// دالة لبناء الخط المنقط
List<Polyline> _buildDashedLine(LatLng start, LatLng end,
{required Color color, required String prefixId}) {
List<Polyline> segments = [];
double dist = Geolocator.distanceBetween(
start.latitude, start.longitude, end.latitude, end.longitude);
if (dist < 2) return []; // قريبة جداً، لا نرسم خطاً
const double dashLengthMeters = 8.0;
const double gapLengthMeters = 6.0;
double totalLength = 0.0;
int segmentCount = 0;
while (totalLength < dist) {
double startFraction = totalLength / dist;
double startLat =
start.latitude + (end.latitude - start.latitude) * startFraction;
double startLng =
start.longitude + (end.longitude - start.longitude) * startFraction;
totalLength += dashLengthMeters;
if (totalLength > dist) totalLength = dist;
double endFraction = totalLength / dist;
double endLat =
start.latitude + (end.latitude - start.latitude) * endFraction;
double endLng =
start.longitude + (end.longitude - start.longitude) * endFraction;
segments.add(
Polyline(
polylineId: PolylineId('${prefixId}_dash_$segmentCount'),
points: [LatLng(startLat, startLng), LatLng(endLat, endLng)],
color: color,
width: 4.0,
),
);
segmentCount++;
totalLength += gapLengthMeters;
}
return segments;
}
// تحديث ورسم الخط المنقط من نهاية الطريق إلى موقع الراكب الفعلي
void _updatePassengerWalkLine() {
// مسح خطوط المشي السابقة
polyLines.removeWhere(
(p) => p.polylineId.value.startsWith('passenger_walk_line'));
if (!isRideStarted &&
upcomingPathPoints.isNotEmpty &&
latLngPassengerLocation.latitude != 0) {
final LatLng lastRoadPt = upcomingPathPoints.last;
final walkDashes = _buildDashedLine(
lastRoadPt,
latLngPassengerLocation,
color: Colors.blueGrey, // لون أزرق رمادي مميز
prefixId: 'passenger_walk_line',
);
polyLines.addAll(walkDashes);
}
}
}
double safeParseDouble(dynamic value, {double defaultValue = 0.0}) {

View File

@@ -481,12 +481,14 @@ class NavigationController extends GetxController
}
bool _isProcessing = false;
Future<void> handleLocationUpdateFromCentral(LatLng newLoc, double locSpeed, double locHeading) async {
Future<void> handleLocationUpdateFromCentral(
LatLng newLoc, double locSpeed, double locHeading) async {
if (_isProcessing) return;
_isProcessing = true;
try {
currentSpeed = locSpeed; // Convert m/s to km/h already done by location controller if needed, wait location_controller sends raw speed or km/h? It sends raw speed. So we should * 3.6
currentSpeed =
locSpeed; // Convert m/s to km/h already done by location controller if needed, wait location_controller sends raw speed or km/h? It sends raw speed. So we should * 3.6
currentSpeed = locSpeed * 3.6;
// Skip if movement is too small
@@ -1158,7 +1160,7 @@ class NavigationController extends GetxController
_lastTraveledIndexInFullRoute = 0;
currentInstruction = "";
nextInstruction = "";
currentManeuverModifier = "intaleq";
currentManeuverModifier = "siro";
distanceToNextStep = "";
totalDistanceRemaining = "";
estimatedTimeRemaining = "";

View File

@@ -51,7 +51,8 @@ class NavigationView extends StatelessWidget {
circles: c.circles,
polygons: c.polygons,
mapType: s.isMapDarkMode
? IntaleqMapType.normal // Normal in IntaleqMap seems to be Dark
? IntaleqMapType
.normal // Normal in SiroMap seems to be Dark
: IntaleqMapType.light,
initialCameraPosition: CameraPosition(
target: c.myLocation ?? const LatLng(33.5138, 36.2765),
@@ -159,7 +160,7 @@ class _NavigationCenterIcon extends StatelessWidget {
size: 32,
),
),
const SizedBox(height: 40),
const SizedBox(height: 40),
],
),
),

View File

@@ -12,7 +12,7 @@ class MyTranslation extends Translations {
"I am using": "أنا عم بستخدم",
"If you need to reach me, please contact the driver directly at":
"إذا بدك تتواصل معي، اتصل بالسائق مباشرة على",
"Intaleq Wallet": "محفظة انطلق",
"Siro Wallet": "محفظة سيرو",
"KM": "كم",
"Minutes": "دقايق",
"You haven't moved sufficiently!": 'لم تتحرك بالقدر الكافي',
@@ -41,8 +41,8 @@ class MyTranslation extends Translations {
"\$pricePoint": "\$pricePoint",
"\$title \$subtitle": "\$title \$subtitle",
")[1]}": ")[1]}",
"*Intaleq APP CODE*": "*كود تطبيق انطلق*",
"*Intaleq DRIVER CODE*": "*كود سائق انطلق*",
"*Siro APP CODE*": "*كود تطبيق سيرو*",
"*Siro DRIVER CODE*": "*كود سائق سيرو*",
"--": "--",
". I am at least 18 years of age.": ". عمري 18 سنة أو أكثر.",
". The app will connect you with a nearby driver.":
@@ -513,8 +513,8 @@ class MyTranslation extends Translations {
"Date of Birth is": "تاريخ الميلاد هو",
"Date of Birth:": "تاريخ الميلاد:",
"Days": "الأيام",
"Dear ,\n🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n👉 Download link:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\nI look forward to keeping you close during my adventure!\nIntaleq ,":
"عزيزي/عزيزتي،\n🚀 بلشت رحلة جديدة وحابب/حابّة أشاركك التفاصيل وموقعي الحالي معك مباشرة! تفضل حمّل تطبيق انطلق... إلخ",
"Dear ,\n🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Siro app. It will allow you to view my trip details and my latest location.\n👉 Download link:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\nI look forward to keeping you close during my adventure!\nSiro ,":
"عزيزي/عزيزتي،\n🚀 بلشت رحلة جديدة وحابب/حابّة أشاركك التفاصيل وموقعي الحالي معك مباشرة! تفضل حمّل تطبيق سيرو... إلخ",
"Debit": "خصم",
"Delete": "حذف",
"Delete My Account": "احذف حسابي",
@@ -548,10 +548,10 @@ class MyTranslation extends Translations {
"Documents check": "فحص المستندات",
"Done": "تم",
"Dont forget your personal belongings.": "متنساش حاجاتك الشخصية.",
"Download the Intaleq Driver app now and earn rewards!":
"حمّل تطبيق سائق انطلق هلق واكسب مكافآت!",
"Download the Intaleq app now and enjoy your ride!":
"حمّل تطبيق انطلق هلق واستمتع برحلتك!",
"Download the Siro Driver app now and earn rewards!":
"حمّل تطبيق سائق سيرو هلق واكسب مكافآت!",
"Download the Siro app now and enjoy your ride!":
"حمّل تطبيق سيرو هلق واستمتع برحلتك!",
"Download the app now:": "حمّل التطبيق هلق:",
"Drawing route on map...": "عم نرسم الطريق على الخريطة...",
"Driver": "السائق",
@@ -654,8 +654,8 @@ class MyTranslation extends Translations {
"Enter your wallet number": "أدخل رقم محفظتك",
"Error": "صار خطأ",
"Evening": "المسا",
"Exclusive offers and discounts always with the Intaleq app":
"عروض وخصومات حصرية دايماً مع تطبيق انطلق",
"Exclusive offers and discounts always with the Siro app":
"عروض وخصومات حصرية دايماً مع تطبيق سيرو",
"Exclusive offers and discounts always with the Sefer app":
"عروض وخصومات حصرية دايماً مع تطبيق سفر",
"Exit": "خروج",
@@ -699,9 +699,9 @@ class MyTranslation extends Translations {
"Flag-down fee": "رسوم بداية المشوار",
"For Drivers": "للسواقين",
"For Egypt": "لمصر",
"For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance":
"لرحلات انطلق والتوصيل، السعر بيحسب ديناميكياً. لرحلات الكومفورت، السعر بيعتمد على الوقت والمسافة.",
"For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance":
"For Siro and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance":
"لرحلات سيرو والتوصيل، السعر بيحسب ديناميكياً. لرحلات الكومفورت، السعر بيعتمد على الوقت والمسافة.",
"For Siro and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance":
"لرحلات انطلاق والسكوتر، السعر بيحسب ديناميكياً. لرحلات الكومفورت، السعر بيعتمد على الوقت والمسافة.",
"Free Call": "مكالمة مجانية",
"Frequently Asked Questions": "الأسئلة الشائعة",
@@ -724,15 +724,15 @@ class MyTranslation extends Translations {
"Get": "احصل على",
"Get Details of Trip": "احصل على تفاصيل الرحلة",
"Get Direction": "احصل على الاتجاهات",
"Get a discount on your first Intaleq ride!":
"احصل على خصم بأول رحلة انطلق!",
"Get a discount on your first Siro ride!":
"احصل على خصم بأول رحلة سيرو!",
"Get features for your country": "احصل على الميزات لبلدك",
"Get it Now!": "احصل عليها هلق!",
"Get to your destination quickly and easily.":
"توصل لوجهتك بسرعة وسهولة.",
"Getting Started": "البدء",
"Gift Already Claimed": "تم استلام الهدية من قبل",
"Go": "انطلق",
"Go": "سيرو",
"Go To Favorite Places": "روح للأماكن المفضلة",
"Go to next step": "روح للخطوة الجاية",
"Go to next step\nscan Car License.":
@@ -783,7 +783,7 @@ class MyTranslation extends Translations {
"How much Passenger pay?": "قديش بدفع الراكب؟",
"How much longer will you be?": "قديش بعدك بتأخر؟",
"How to use App": "كيف تستخدم التطبيق",
"How to use Intaleq": "كيف تستخدم انطلق",
"How to use Siro": "كيف تستخدم سيرو",
"How was the passenger?": "كيف كان الراكب؟",
"How was your trip with": "كيف كانت رحلتك مع",
"How would you rate our app?": "كيف بتقيّم تطبيقنا؟",
@@ -849,43 +849,43 @@ class MyTranslation extends Translations {
"Inspection Date": "تاريخ الفحص",
"InspectionResult": "نتيجة الفحص",
"Install our app:": "ثبّت تطبيقنا:",
"Intaleq": "انطلق",
"Intaleq Balance": "رصيد انطلق",
"Intaleq DRIVER CODE": "كود سائق انطلق",
"Intaleq Driver": "سائق انطلق",
"Intaleq LLC": "شركة انطلق",
"Intaleq Order": "طلب انطلق",
"Intaleq Over": "انطلق انتهى",
"Intaleq Reminder": "تذكير انطلق",
"Intaleq Wallet Features:": "ميزات محفظة انطلق:",
"Intaleq's Response": "رد انطلق",
"Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\nHere are some of the key features that set us apart:":
"انطلق تطبيق مشاركة رحلات مصمم لسلامتك وتوفير فلوسك. بنربطك بسواقين موثوقين بمنطقتك...",
"Intaleq is committed to safety, and all of our captains are carefully screened and background checked.":
"انطلق ملتزم بالسلامة، وكل سواقينا بتم فحصهم بدقة.",
"Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.":
"انطلق أول تطبيق مشاركة رحلات بسوريا، مصمم يربطك بأقرب السواقين لرحلة سريعة ومريحة.",
"Intaleq is the ride-hailing app that is safe, reliable, and accessible.":
"انطلق تطبيق نقل آمن وموثوق ومتاح للجميع.",
"Intaleq is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Intaleq, you enjoy quality, safety, and peace of mind—every time you ride.":
"انطلق هو تطبيق مشاركة الرحلات الآمن والأكثر موثوقية المصمم خصيصاً للركاب بسوريا. بنقدملك تجربة رحلة مريحة، محترمة، وبأسعار مناسبة، مع ميزات بتعطي أولوية لسلامتك وراحتك. سواقينا الموثوقين موثقين ومؤمنين، وبيدعمهم صيانة دورية من مهندسين محترفين. كمان بنقدم خدمات دعم على الطريق عشان نضمنلك رحلة سلسة ومن دون هموم. مع انطلق، بتستمتع بالجودة، السلامة، وراحة البال—بكل رحلة.",
"Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.":
"انطلق هو تطبيق مشاركة الرحلات الآمن اللي بقدّم ميزات كتير للسواقين والركاب. بنقدّم أقل عمولة بس 8% عشان تاخد أحسن قيمة لرحلاتك...",
"Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.":
"انطلق بيقدم خيارات متنوعة منها اقتصادي، مريح، وفاخر لتناسب احتياجاتك وميزانيتك.",
"Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.":
"انطلق بيقدم خيارات سيارات متنوعة تناسب احتياجاتك، منها الاقتصادي، المريح، والفاخر. اختر اللي بيناسب ميزانيتك وعدد الركاب.",
"Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.":
"انطلق بيقدم طرق دفع متعددة لراحتك. اختر بين الدفع كاش أو ببطاقة ائتمان/خصم وقت تأكيد الرحلة.",
"Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.":
"انطلق بيقدم ميزات سلامة متعددة منها التحقق من السائق، تتبع الرحلة جوا التطبيق، خيارات اتصال الطوارئ، وإمكانية مشاركة حالة رحلتك مع جهات موثوقة.",
"Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.":
"انطلق بيعطي أولوية لسلامتك. بنقدم ميزات مثل التحقق من السائق، تتبع الرحلة جوا التطبيق، وخيارات اتصال الطوارئ.",
"Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.":
"انطلق بوفر دردشة جوا التطبيق عشان تتواصل مع السائق أو الراكب وقت الرحلة.",
"Intaleq123": "Intaleq123",
"Intaleq: For fixed salary and endpoints.":
"انطلق: للراتب الثابت والمحطات النهائية.",
"Siro": "سيرو",
"Siro Balance": "رصيد سيرو",
"Siro DRIVER CODE": "كود سائق سيرو",
"Siro Driver": "سائق سيرو",
"Siro LLC": "شركة سيرو",
"Siro Order": "طلب سيرو",
"Siro Over": "سيرو انتهى",
"Siro Reminder": "تذكير سيرو",
"Siro Wallet Features:": "ميزات محفظة سيرو:",
"Siro's Response": "رد سيرو",
"Siro is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\nHere are some of the key features that set us apart:":
"سيرو تطبيق مشاركة رحلات مصمم لسلامتك وتوفير فلوسك. بنربطك بسواقين موثوقين بمنطقتك...",
"Siro is committed to safety, and all of our captains are carefully screened and background checked.":
"سيرو ملتزم بالسلامة، وكل سواقينا بتم فحصهم بدقة.",
"Siro is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.":
"سيرو أول تطبيق مشاركة رحلات بسوريا، مصمم يربطك بأقرب السواقين لرحلة سريعة ومريحة.",
"Siro is the ride-hailing app that is safe, reliable, and accessible.":
"سيرو تطبيق نقل آمن وموثوق ومتاح للجميع.",
"Siro is the safest and most reliable ride-sharing app designed especially for passengers in Syria. We provide a comfortable, respectful, and affordable riding experience with features that prioritize your safety and convenience. Our trusted captains are verified, insured, and supported by regular car maintenance carried out by top engineers. We also offer on-road support services to make sure every trip is smooth and worry-free. With Siro, you enjoy quality, safety, and peace of mind—every time you ride.":
"سيرو هو تطبيق مشاركة الرحلات الآمن والأكثر موثوقية المصمم خصيصاً للركاب بسوريا. بنقدملك تجربة رحلة مريحة، محترمة، وبأسعار مناسبة، مع ميزات بتعطي أولوية لسلامتك وراحتك. سواقينا الموثوقين موثقين ومؤمنين، وبيدعمهم صيانة دورية من مهندسين محترفين. كمان بنقدم خدمات دعم على الطريق عشان نضمنلك رحلة سلسة ومن دون هموم. مع سيرو، بتستمتع بالجودة، السلامة، وراحة البال—بكل رحلة.",
"Siro is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.":
"سيرو هو تطبيق مشاركة الرحلات الآمن اللي بقدّم ميزات كتير للسواقين والركاب. بنقدّم أقل عمولة بس 8% عشان تاخد أحسن قيمة لرحلاتك...",
"Siro offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.":
"سيرو بيقدم خيارات متنوعة منها اقتصادي، مريح، وفاخر لتناسب احتياجاتك وميزانيتك.",
"Siro offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.":
"سيرو بيقدم خيارات سيارات متنوعة تناسب احتياجاتك، منها الاقتصادي، المريح، والفاخر. اختر اللي بيناسب ميزانيتك وعدد الركاب.",
"Siro offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.":
"سيرو بيقدم طرق دفع متعددة لراحتك. اختر بين الدفع كاش أو ببطاقة ائتمان/خصم وقت تأكيد الرحلة.",
"Siro offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.":
"سيرو بيقدم ميزات سلامة متعددة منها التحقق من السائق، تتبع الرحلة جوا التطبيق، خيارات اتصال الطوارئ، وإمكانية مشاركة حالة رحلتك مع جهات موثوقة.",
"Siro prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.":
"سيرو بيعطي أولوية لسلامتك. بنقدم ميزات مثل التحقق من السائق، تتبع الرحلة جوا التطبيق، وخيارات اتصال الطوارئ.",
"Siro provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.":
"سيرو بوفر دردشة جوا التطبيق عشان تتواصل مع السائق أو الراكب وقت الرحلة.",
"Siro123": "Siro123",
"Siro: For fixed salary and endpoints.":
"سيرو: للراتب الثابت والمحطات النهائية.",
"Invalid MPIN": "رمز MPIN غير صالح",
"Invalid OTP": "رمز OTP غير صالح",
"Invalid customer MSISDN": "رقم هاتف العميل غير صالح",
@@ -903,8 +903,8 @@ class MyTranslation extends Translations {
"IssueDate": "تاريخ الإصدار",
"JOD": "د.أ",
"Join": "انضم",
"Join Intaleq as a driver using my referral code!":
"انضم لسواقة انطلق بكود الدعوة بتاعي!",
"Join Siro as a driver using my referral code!":
"انضم لسواقة سيرو بكود الدعوة بتاعي!",
"Jordan": "الأردن",
"Keep it up!": "كمل بهالحماس!",
"Kuwait": "الكويت",
@@ -1115,7 +1115,7 @@ class MyTranslation extends Translations {
"Order Applied": "تم تطبيق الطلب",
"Order Cancelled": "تم إلغاء الطلب",
"Order Cancelled by Passenger": "تم إلغاء الطلب من الراكب",
"Order Details Intaleq": "تفاصيل الطلب انطلق",
"Order Details Siro": "تفاصيل الطلب سيرو",
"Order History": "سجل الطلبات",
"Order ID": "رقم الطلب",
"Order Request Page": "صفحة طلب الرحلة",
@@ -1272,8 +1272,8 @@ class MyTranslation extends Translations {
"تفضل تأكد ما تترك أي حاجات شخصية بالسيارة.",
"Please make sure to read the license carefully.":
"تفضل تأكد تقرأ الرخصة بعناية.",
"Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Intaleq app":
"من فضلك تأكد إن معاك كل حاجاتك الشخصية وإن أي مبلغ متبقي، لو موجود، تم إضافته لمحفظتك قبل ما تمشي. شكرًا لاستخدامك تطبيق انطلق",
"Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Siro app":
"من فضلك تأكد إن معاك كل حاجاتك الشخصية وإن أي مبلغ متبقي، لو موجود، تم إضافته لمحفظتك قبل ما تمشي. شكرًا لاستخدامك تطبيق سيرو",
"Please provide details about any long-term diseases.":
"تفضل قدّم تفاصيل عن أي أمراض مزمنة.",
"Please put your licence in these border": "تفضل حط رخصتك بهالإطار",
@@ -1444,7 +1444,7 @@ class MyTranslation extends Translations {
"Selected driver": "السائق المختار",
"Selected file:": "الملف المختار:",
"Send Email": "أرسل بريد",
"Send Intaleq app to him": "أرسل تطبيق انطلق له",
"Send Siro app to him": "أرسل تطبيق سيرو له",
"Send Invite": "أرسل دعوة",
"Send Message": "أرسل رسالة",
"Send Verfication Code": "أرسل رمز التحقق",
@@ -1532,8 +1532,8 @@ class MyTranslation extends Translations {
"Status": "الحالة",
"Status is": "الحالة هي",
"Stay": "ابقى",
"Step-by-step instructions on how to request a ride through the Intaleq app.":
"تعليمات خطوة بخطوة عشان تطلب رحلة عبر تطبيق انطلق.",
"Step-by-step instructions on how to request a ride through the Siro app.":
"تعليمات خطوة بخطوة عشان تطلب رحلة عبر تطبيق سيرو.",
"Stop": "توقف",
"Store your money with us and receive it in your bank as a monthly salary.":
"خزّن فلوسك عنا واستلمها ببنكك كراتب شهري.",
@@ -1703,8 +1703,8 @@ class MyTranslation extends Translations {
"To get a gift for both": "عشان تاخد هدية للكل",
"To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.":
"عشان نعطيك أحسن تجربة، لازم نعرف وينك موقعك. بنستخدم موقعك عشان نلاقي سواقين قريبين ولعملية الالتقاط.",
"To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.":
"عشان تسجل كسائق أو تتعرف على المتطلبات، تفضل زور موقعنا أو تواصل مع دعم انطلق مباشرة.",
"To register as a driver or learn about the requirements, please visit our website or contact Siro support directly.":
"عشان تسجل كسائق أو تتعرف على المتطلبات، تفضل زور موقعنا أو تواصل مع دعم سيرو مباشرة.",
"To use Wallet charge it": "عشان تستخدم المحفظة اشحنها",
"Today": "اليوم",
"Top up Balance": "شحن الرصيد",
@@ -1791,7 +1791,7 @@ class MyTranslation extends Translations {
"Type your Email": "اكتب بريدك الإلكتروني",
"Type your message": "اكتب رسالتك",
"Type your message...": "اكتب رسالتك...",
"Types of Trips in Intaleq:": "أنواع الرحلات بانطلاق:",
"Types of Trips in Siro:": "أنواع الرحلات بانطلاق:",
"USA": "أمريكا",
"Uncompromising Security": "أمان لا يتنازل عنه",
"Unknown": "غير معروف",
@@ -1851,8 +1851,8 @@ class MyTranslation extends Translations {
"View your past transactions": "شوف معاملاتك السابقة",
"Visa": "فيزا",
"Visit Website/Contact Support": "زور الموقع/تواصل مع الدعم",
"Visit our website or contact Intaleq support for information on driver registration and requirements.":
"زور موقعنا أو تواصل مع دعم انطلق لمعلومات عن تسجيل السائق والمتطلبات.",
"Visit our website or contact Siro support for information on driver registration and requirements.":
"زور موقعنا أو تواصل مع دعم سيرو لمعلومات عن تسجيل السائق والمتطلبات.",
"Voice Calling": "الاتصال الصوتي",
"Waiting": "بالانتظار",
"Waiting Time": "وقت الانتظار",
@@ -1869,7 +1869,7 @@ class MyTranslation extends Translations {
"Wallet is blocked": "المحفظة محظورة",
"Wallet!": "المحفظة!",
"Warning": "تحذير",
"Warning: Intaleqing detected!": "تحذير: تم كشف تجاوزات!",
"Warning: Siroing detected!": "تحذير: تم كشف تجاوزات!",
"Warning: Speeding detected!": "تحذير: تم كشف سرعة زائدة!",
"We Are Sorry That we dont have cars in your Location!":
"آسفين ما عندنا سيارات بموقعك!",
@@ -1882,8 +1882,8 @@ class MyTranslation extends Translations {
"عم نبحث عن أقرب سائق لك",
"We connect you with the nearest drivers for faster pickups and quicker journeys.":
"بنربطك بأقرب السواقين لالتقاط أسرع ورحلات أسرع.",
"We have maintenance offers for your car. You can use them after completing 600 trips to get a 20% discount on car repairs. Enjoy using our Intaleq app and be part of our Intaleq family.":
"عندنا عروض صيانة لسيارتك. تقدر تستخدمها بعد ما تكمل 600 رحلة عشان تاخد خصم 20% على تصليح السيارة. استمتع باستخدام تطبيق انطلق وكون جزء من عيلة انطلق.",
"We have maintenance offers for your car. You can use them after completing 600 trips to get a 20% discount on car repairs. Enjoy using our Siro app and be part of our Siro family.":
"عندنا عروض صيانة لسيارتك. تقدر تستخدمها بعد ما تكمل 600 رحلة عشان تاخد خصم 20% على تصليح السيارة. استمتع باستخدام تطبيق سيرو وكون جزء من عيلة سيرو.",
"We have partnered with health insurance providers to offer you special health coverage. Complete 500 trips and receive a 20% discount on health insurance premiums.":
"عقدنا شراكة مع مزودي تأمين صحي عشان نعطيك تغطية صحية خاصة. اكمل 500 رحلة واحصل على خصم 20% على أقساط التأمين الصحي.",
"We have received your application to join us as a driver. Our team is currently reviewing it. Thank you for your patience.":
@@ -1900,7 +1900,7 @@ class MyTranslation extends Translations {
"بنحتاج رقم هاتفك عشان نتواصل معك ونساعدك تستلم طلبات.",
"We need your phone number to contact you and to help you.":
"بنحتاج رقم هاتفك عشان نتواصل معك ونساعدك.",
"We noticed the Intaleq is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.":
"We noticed the Siro is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.":
"لاحظنا إن السرعة فوق 100 كم/ساعة. تفضل خفف السرعة عشان سلامتك. إذا حسيت إنك مش بأمان، تقدر تشارك تفاصيل رحلتك مع جهة اتصال أو تتصل بالشرطة بزر الطوارئ الأحمر.",
"We regret to inform you that another driver has accepted this order.":
"نأسف لإعلامك إن سائق تاني قبل هالطلب.",
@@ -1918,15 +1918,15 @@ class MyTranslation extends Translations {
"Welcome": "ياهلا وسهلا",
"Welcome Back!": "مرحباً بعودتك!",
"Welcome Offer!": "عرض ترحيبي!",
"Welcome to Intaleq!": "أهلاً بانطلق!",
"Welcome to Siro!": "أهلاً بسيرو!",
"What are the order details we provide to you?":
"إيش تفاصيل الطلب اللي بنقدملك؟",
"What are the requirements to become a driver?":
"إيش المتطلبات عشان تصير سائق؟",
"What is Types of Trips in Intaleq?": "إيش أنواع الرحلات بانطلاق؟",
"What is Types of Trips in Siro?": "إيش أنواع الرحلات بانطلاق؟",
"What is the feature of our wallet?": "إيش مميزات محفظتنا؟",
"What safety measures does Intaleq offer?":
"إيش إجراءات السلامة اللي بيقدمها انطلق؟",
"What safety measures does Siro offer?":
"إيش إجراءات السلامة اللي بيقدمها سيرو؟",
"What types of vehicles are available?":
"إيش أنواع المركبات المتاحة؟",
"WhatsApp": "واتساب",
@@ -1941,10 +1941,10 @@ class MyTranslation extends Translations {
"Where to": "وين بدك تروح؟",
"Where you want go": "وين بدك تروح",
"Which method you will pay": "إيش طريقة الدفع اللي بدك تستخدمها",
"Why Choose Intaleq?": "ليش تختار انطلق؟",
"Why Choose Siro?": "ليش تختار سيرو؟",
"Why do you want to cancel this trip?": "ليش بدك تلغي هالرحلة؟",
"With Intaleq, you can get a ride to your destination in minutes.":
"مع انطلق، تقدر تاخد رحلة لوجهتك بدقايق.",
"With Siro, you can get a ride to your destination in minutes.":
"مع سيرو، تقدر تاخد رحلة لوجهتك بدقايق.",
"Work": "العمل",
"Work & Contact": "العمل والتواصل",
"Work Saved": "تم حفظ العمل",
@@ -1968,7 +1968,7 @@ class MyTranslation extends Translations {
"Year of Manufacture": "سنة الصنع",
"Yes": "إي",
"Yes, Pay": "إي، ادفع",
"Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.":
"Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Siro cancellation policy for details.":
"إي، تقدر تلغي رحلتك بشروط معينة (مثلاً قبل ما يتحدد سائق). شوف سياسة الإلغاء بانطلاق للتفاصيل.",
"Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.":
"إي، تقدر تلغي رحلتك، بس انتبه إن في رسوم إلغاء ممكن تتطبق حسب الوقت اللي بتلغي فيه.",
@@ -2042,8 +2042,8 @@ class MyTranslation extends Translations {
"You can purchase a budget to enable online access through the options listed below.":
"تقدر تشتري ميزانية عشان تفعّل الاتصال الأونلاين عبر الخيارات اللي تحت.",
"You can resend in": "تقدر تعيد الإرسال بـ",
"You can share the Intaleq App with your friends and earn rewards for rides they take using your code":
"تقدر تشارك تطبيق انطلق مع صحابك وتكسب مكافآت عن الرحلات اللي يعملوها بكودك",
"You can share the Siro App with your friends and earn rewards for rides they take using your code":
"تقدر تشارك تطبيق سيرو مع صحابك وتكسب مكافآت عن الرحلات اللي يعملوها بكودك",
"You can upgrade price to may driver accept your order":
"تقدر ترفع السعر عشان يقبل سائق طلبك",
"You canceled VIP trip": "ألغيت رحلة VIP",
@@ -2320,7 +2320,7 @@ class MyTranslation extends Translations {
"login or register subtitle": "عنوان تسجيل الدخول أو التسجيل",
"m": "م",
"m at the agreed-upon location": "بالموقع المتفق عليه",
"m inviting you to try Intaleq.": "بدعوك تجرب انطلق.",
"m inviting you to try Siro.": "بدعوك تجرب سيرو.",
"m waiting for you": "عم أستناك",
"m waiting for you at the specified location.":
"عم أستناك بالموقع المحدد.",
@@ -2369,9 +2369,9 @@ class MyTranslation extends Translations {
"rides": "الرحلات",
"ru": "ru",
"s Degree": "درجة",
"s Intaleq account.": "حساب انطلق.",
"s Intaleq account.\nStore your money with us and receive it in your bank as a monthly salary.":
"ميزات محفظة انطلق:\nتحويل الأموال عدة مرات.\nالتحويل لأي شخص.\nإجراء عمليات شراء.\nشحن حسابك.\nشحن حساب انطلق لصديق.\nخزّن فلوسك عنا واستلمها ببنكك كراتب شهري.",
"s Siro account.": "حساب سيرو.",
"s Siro account.\nStore your money with us and receive it in your bank as a monthly salary.":
"ميزات محفظة سيرو:\nتحويل الأموال عدة مرات.\nالتحويل لأي شخص.\nإجراء عمليات شراء.\nشحن حسابك.\nشحن حساب سيرو لصديق.\nخزّن فلوسك عنا واستلمها ببنكك كراتب شهري.",
"s License": "رخصة",
"s Personal Information": "المعلومات الشخصية",
"s Promo": "عرض",
@@ -2382,14 +2382,14 @@ class MyTranslation extends Translations {
"في زحمة كتير هون. تقترّح نقطة التقاط تانية؟",
"s license does not match the one on your ID document. Please verify and provide the correct documents.":
"رخصته ما بتتطابق مع الهوية. تفضل تحقق وقدّم الوثائق الصحيحة.",
"s license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.":
"s license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Siro app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.":
"رخصته، الهوية، ورخصة السيارة. نظام الذكاء الاصطناعي رح يراجعها ويوثّقها بدقيقتين لـ 3. إذا انقبلت، تقبل تشتغل كسائق بانطلاق. انتبه، تزوير وثائق جريمة خطيرة وبتسبب فصل فوري وعواقب قانونية.",
"s license. Please verify and provide the correct documents.":
"رخصته. تفضل تحقق وقدّم الوثائق الصحيحة.",
"s phone": "هاتف",
"s pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you both our valued passengers and our dedicated captains.":
"خدمة مشاركة الرحلات الرائدة، مطورة بفخر من ملاك عرب ومحليين. بنعطي أولوية للقرب منك ركابنا وسواقينا.",
"s time to check the Intaleq app!": "وقت تتفقد تطبيق انطلق!",
"s time to check the Siro app!": "وقت تتفقد تطبيق سيرو!",
"safe_and_comfortable": "آمن ومريح",
"scams operations": "عمليات احتيال",
"scan Car License.": "امسح رخصة السيارة.",
@@ -2419,8 +2419,8 @@ class MyTranslation extends Translations {
"t have a phone number.": "ما عندك رقم هاتف.",
"t have a reason": "ما عندك سبب",
"t have account": "ما عندك حساب",
"t have enough money in your Intaleq wallet":
"ما عندك فلوس كافية بمحفظة انطلق",
"t have enough money in your Siro wallet":
"ما عندك فلوس كافية بمحفظة سيرو",
"t moved sufficiently!": "ما تحركت بشكل كافي!",
"t need a ride anymore": "ما بدك رحلة بعد هيك",
"t return to use app after 1 month": "ما ترجع تستخدم التطبيق بعد شهر",
@@ -2478,10 +2478,10 @@ class MyTranslation extends Translations {
"wallet due to a previous trip.": "المحفظة بسبب رحلة سابقة.",
"wallet_credited_message": "تم إضافة",
"wallet_updated": "تم تحديث المحفظة",
"welcome to intaleq": "أهلاً بانطلاق",
"welcome to siro": "أهلاً بانطلاق",
"welcome user": "أهلاً بالمستخدم",
"welcome_message": "رسالة الترحيب",
"welcome_to_intaleq": "أهلاً بانطلاق",
"welcome_to_siro": "أهلاً بانطلاق",
"with type": "بالنوع",
"witout zero": "بدون صفر",
"write Color for your car": "اكتب لون سيارتك",
@@ -2501,8 +2501,8 @@ class MyTranslation extends Translations {
"you have a negative balance of": "عندك رصيد سلبي بقيمة",
"you must insert token code": "لازم تدخل رمز الرمز",
"you will pay to Driver": "رح تدفع للسائق",
"you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet":
"رح تدفع للسائق هتدفع تكلفة وقت السائق شوف محفظة انطلق بتاعتك",
"you will pay to Driver you will be pay the cost of driver time look to your Siro Wallet":
"رح تدفع للسائق هتدفع تكلفة وقت السائق شوف محفظة سيرو بتاعتك",
"you will use this device?": "رح تستخدم هالجهاز؟",
"your ride is Accepted": "رحلتك انقبلت",
"your ride is applied": "تم تقديم رحلتك",

View File

@@ -253,7 +253,7 @@ class _PaymentScreenMtnState extends State<PaymentScreenMtn> {
text: "اذهب إلى قسم 'دفع الفواتير' أو 'خدمات الدفع'."),
_StepTile(
number: 3,
text: "ابحث عن 'Intaleq App' في قائمة المفوترين."),
text: "ابحث عن 'Siro App' في قائمة المفوترين."),
_StepTile(
number: 4,
text:

View File

@@ -23,9 +23,9 @@ class RatingController extends GetxController {
void _redirectToAppStore() async {
// URLs for App Store and Google Play Store
const appStoreUrl =
'https://apps.apple.com/st/app/intaleq-driver/id6482995159';
'https://apps.apple.com/st/app/siro-driver/id6482995159';
const playStoreUrl =
'https://play.google.com/store/apps/details?id=com.intaleq_driver';
'https://play.google.com/store/apps/details?id=com.siro_driver';
final url = GetPlatform.isIOS ? appStoreUrl : playStoreUrl;
if (await launchUrl(Uri.parse(url))) {

View File

@@ -41,7 +41,7 @@ final box = GetStorage();
const storage = FlutterSecureStorage();
DbSql sql = DbSql.instance;
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
const platform = MethodChannel('com.intaleq_driver/app_control');
const platform = MethodChannel('com.siro_driver/app_control');
const String backgroundServiceChannelId = 'driver_service_channel';
const String locationServiceChannelId = 'location_service_channel';
@@ -286,7 +286,7 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
WidgetsBinding.instance.addObserver(this);
_initApp();
// 🔥 التقاط رسالة القبول من الأندرويد بشكل مباشر 100% 🔥
const platformAppControl = MethodChannel('com.intaleq_driver/app_control');
const platformAppControl = MethodChannel('com.siro_driver/app_control');
platformAppControl.setMethodCallHandler((call) async {
if (call.method == 'onOverlayTripAccepted') {
print("✅ [Native Intent] تم التقاط زر القبول بنجاح من الأندرويد!");

View File

@@ -2,22 +2,22 @@ import 'package:get/get.dart';
List<OnBoardingModel> onBoardingList = [
OnBoardingModel(
title: 'Welcome to Intaleq!'.tr,
title: 'Welcome to Siro!'.tr,
image: 'assets/images/on1.png',
body:
'Intaleq is the ride-hailing app that is safe, reliable, and accessible.'
'Siro is the ride-hailing app that is safe, reliable, and accessible.'
.tr,
),
OnBoardingModel(
title: 'Get to your destination quickly and easily.'.tr,
image: 'assets/images/on2.png',
body: 'With Intaleq, you can get a ride to your destination in minutes.'.tr,
body: 'With Siro, you can get a ride to your destination in minutes.'.tr,
),
OnBoardingModel(
title: 'Enjoy a safe and comfortable ride.'.tr,
image: 'assets/images/on3.png',
body:
'Intaleq is committed to safety, and all of our captains are carefully screened and background checked.'
'Siro is committed to safety, and all of our captains are carefully screened and background checked.'
.tr,
),
];

View File

@@ -2,7 +2,7 @@ import 'package:flutter/services.dart';
class OverlayMethodChannel {
// 1. تم تصحيح اسم القناة ليتطابق مع ملف MainActivity.kt [1]
static const _channel = MethodChannel('com.intaleq_driver/app_control');
static const _channel = MethodChannel('com.siro_driver/app_control');
static Future bringToForeground() async {
try {

View File

@@ -1,8 +1,8 @@
إليك التوثيق التقني العميق (Deep Technical Documentation) لتطبيق السائق (Driver App) في منصة **انطلق (Intaleq)**. تم إعداد هذا التقرير بناءً على تحليل الكود المصدري، مع التركيز على البنية التحتية، تدفق البيانات، والخدمات الخلفية.
إليك التوثيق التقني العميق (Deep Technical Documentation) لتطبيق السائق (Driver App) في منصة **سيرو (Siro)**. تم إعداد هذا التقرير بناءً على تحليل الكود المصدري، مع التركيز على البنية التحتية، تدفق البيانات، والخدمات الخلفية.
---
# 📘 Intaleq Driver App - Technical Documentation
# 📘 Siro Driver App - Technical Documentation
**الإصدار:** 1.0
**المعمارية:** MVC using GetX

View File

@@ -73,7 +73,7 @@ class SplashScreen extends StatelessWidget {
const SizedBox(height: 30),
// App Name and Slogan with staggered animation
_AnimatedText(
text: 'Intaleq', // Your App Name
text: 'Siro', // Your App Name
animation: splashScreenController.animation,
style: textTheme.headlineMedium?.copyWith(
color: textColor,

View File

@@ -186,7 +186,7 @@ class SyrianCardAI extends StatelessWidget {
),
const SizedBox(height: 16),
Text(
"To become a ride-sharing driver on the Intaleq app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences."
"To become a ride-sharing driver on the Siro app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Siro app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences."
.tr,
style: NewAppStyle.bodyStyle,
textAlign: TextAlign.center,
@@ -209,7 +209,7 @@ class SyrianCardAI extends StatelessWidget {
.playAudio1('assets/aggrement.wav');
} else {
await textToSpeechController.speakText(
'To become a ride-sharing driver on the Intaleq app...'
'To become a ride-sharing driver on the Siro app...'
.tr);
}
},

View File

@@ -35,7 +35,7 @@ class ContactUsPage extends StatelessWidget {
IconButton(
onPressed: () async {
Get.put(TextToSpeechController()).speakText(
'Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.'
'Siro is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.'
.tr);
},
icon: const Icon(Icons.headphones),
@@ -43,7 +43,7 @@ class ContactUsPage extends StatelessWidget {
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
'Intaleq is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.'
'Siro is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.'
.tr,
style: AppStyle.title,
textAlign: TextAlign.center,

View File

@@ -6,11 +6,9 @@ import 'package:siro_driver/controller/auth/captin/login_captin_controller.dart'
// --- Placeholder Imports ---
// Assuming these files exist in your project structure.
import '../../../constant/box_name.dart';
import '../../../constant/colors.dart';
import '../../../controller/auth/captin/phone_helper_controller.dart';
import '../../../controller/local/phone_intel/intl_phone_field.dart';
import '../../../main.dart';
import '../../../print.dart';
// Assuming you have an AppColor class defined in your project.
// import 'path/to/your/app_color.dart';
@@ -304,7 +302,8 @@ class _PhoneNumberScreenState extends State<PhoneNumberScreen> {
if (_formKey.currentState!.validate()) {
setState(() => _isLoading = true);
final rawPhone = _completePhone.replaceFirst('+', '');
Log.print('📱 _submit rawPhone: "$rawPhone" (from _completePhone: "$_completePhone")');
Log.print(
'📱 _submit rawPhone: "$rawPhone" (from _completePhone: "$_completePhone")');
final success = await PhoneAuthHelper.sendOtp(rawPhone);
if (success && mounted) {
Get.to(() => OtpVerificationScreen(phoneNumber: rawPhone));
@@ -316,7 +315,7 @@ class _PhoneNumberScreenState extends State<PhoneNumberScreen> {
@override
Widget build(BuildContext context) {
return AuthScreen(
title: 'welcome to intaleq'.tr,
title: 'welcome to siro'.tr,
subtitle: 'login or register subtitle'.tr,
form: Form(
key: _formKey,
@@ -416,7 +415,8 @@ class _OtpVerificationScreenState extends State<OtpVerificationScreen> {
void _submit() async {
if (_formKey.currentState!.validate()) {
setState(() => _isLoading = true);
await PhoneAuthHelper.verifyOtp(widget.phoneNumber, _otpController.text.trim());
await PhoneAuthHelper.verifyOtp(
widget.phoneNumber, _otpController.text.trim());
if (mounted) setState(() => _isLoading = false);
}
}

View File

@@ -354,7 +354,7 @@ class RegistrationView extends StatelessWidget {
// STEP 3
Widget _buildDocumentUploadStep(BuildContext ctx, RegistrationController c) {
final String linkUpload =
'https://syria.intaleq.xyz/intaleq/auth/syria/uploadImage.php';
'https://syria.intaleq.xyz/siro/auth/syria/uploadImage.php';
return GetBuilder<RegistrationController>(
builder: (ctrl) => SingleChildScrollView(

View File

@@ -26,7 +26,7 @@ class AboutPage extends StatelessWidget {
Padding(
padding: const EdgeInsets.all(16.0),
child: Text(
'Intaleq LLC\n${'Syria'.tr}',
'Siro LLC\n${'Syria'.tr}',
style: AppStyle.headTitle2,
textAlign: TextAlign.center,
),
@@ -34,7 +34,7 @@ class AboutPage extends StatelessWidget {
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Text(
'Intaleq is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:'
'Siro is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:'
.tr,
style: AppStyle.title,
textAlign: TextAlign.center,

View File

@@ -28,7 +28,7 @@ class FrequentlyQuestionsPage extends StatelessWidget {
),
children: [
Text(
'Step-by-step instructions on how to request a ride through the Intaleq app.'
'Step-by-step instructions on how to request a ride through the Siro app.'
.tr,
style: AppStyle.title,
),
@@ -43,7 +43,7 @@ class FrequentlyQuestionsPage extends StatelessWidget {
),
children: [
Text(
'Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.'
'Siro offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.'
.tr,
style: AppStyle.title,
),
@@ -58,7 +58,7 @@ class FrequentlyQuestionsPage extends StatelessWidget {
),
children: [
Text(
'Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.'
'Siro offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.'
.tr,
style: AppStyle.title,
),
@@ -73,7 +73,7 @@ class FrequentlyQuestionsPage extends StatelessWidget {
),
children: [
Text(
'Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.'
'Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Siro cancellation policy for details.'
.tr,
style: AppStyle.title,
),
@@ -98,7 +98,7 @@ class FrequentlyQuestionsPage extends StatelessWidget {
});
},
child: Text(
'Visit our website or contact Intaleq support for information on driver registration and requirements.'
'Visit our website or contact Siro support for information on driver registration and requirements.'
.tr,
style: AppStyle.title,
),
@@ -115,22 +115,22 @@ class FrequentlyQuestionsPage extends StatelessWidget {
),
children: [
Text(
'Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.'
'Siro provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.'
.tr,
style: AppStyle.title,
),
],
),
// Question 8: What safety measures does Intaleq offer?
// Question 8: What safety measures does Siro offer?
ExpansionTile(
title: Text(
'What safety measures does Intaleq offer?'.tr,
'What safety measures does Siro offer?'.tr,
style: AppStyle.title,
),
children: [
Text(
'Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.'
'Siro prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.'
.tr,
style: AppStyle.title,
),

View File

@@ -43,13 +43,13 @@ class UsingAppPage extends StatelessWidget {
question: "What is the feature of our wallet?".tr,
icon: Icons.account_balance_wallet_outlined,
answer: Text(
'''Intaleq Wallet Features:
'''Siro Wallet Features:
- Transfer money multiple times.
- Transfer to anyone.
- Make purchases.
- Charge your account.
- Charge a friend's Intaleq account.
- Charge a friend's Siro account.
- Store your money with us and receive it in your bank as a monthly salary.'''
.tr,
style:
@@ -57,10 +57,10 @@ class UsingAppPage extends StatelessWidget {
),
),
FaqItem(
question: "What is Types of Trips in Intaleq?".tr,
question: "What is Types of Trips in Siro?".tr,
icon: Icons.map_outlined,
answer: Text(
'''Types of Trips in Intaleq:
'''Types of Trips in Siro:
- Comfort: For cars newer than 2017 with air conditioning.
- Lady: For girl drivers.

View File

@@ -211,8 +211,12 @@ class _HistoryDetailsPageState extends State<HistoryDetailsPage> {
: endLocation.longitude,
),
);
mapController.animateCamera(
CameraUpdate.newLatLngBounds(bounds, left: 60, top: 60, right: 60, bottom: 60));
mapController.animateCamera(CameraUpdate.newLatLngBounds(
bounds,
left: 60,
top: 60,
right: 60,
bottom: 60));
}
},
),

View File

@@ -315,7 +315,7 @@ class UserHeader extends StatelessWidget {
shadows: [Shadow(blurRadius: 2, color: Colors.black26)]),
),
accountEmail:
box.read(BoxName.emailDriver).toString().contains('intaleqapp')
box.read(BoxName.emailDriver).toString().contains('siroapp')
? Text('Your email not updated yet'.tr)
: Text(box.read(BoxName.emailDriver)),
currentAccountPicture: GetBuilder<ImageController>(

View File

@@ -313,8 +313,9 @@ class _MapView extends StatelessWidget {
: loc.myLocation,
zoom: 15,
),
mapType:
s.isMapDarkMode ? IntaleqMapType.normal : IntaleqMapType.light,
mapType: s.isMapDarkMode
? IntaleqMapType.normal
: IntaleqMapType.light,
polygons: ctrl.heatmapPolygons,
markers: {
Marker(

View File

@@ -47,4 +47,3 @@ class OsmMapView extends StatelessWidget {
});
}
}

View File

@@ -127,7 +127,7 @@ GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
} else {
final left = 2 - now.difference(lastTime).inMinutes;
NotificationController().showNotification(
'Intaleq Driver'.tr,
'Siro Driver'.tr,
'${'Please wait'.tr} $left ${"minutes before trying again.".tr}',
'ding',
'',

View File

@@ -37,7 +37,8 @@ class GoogleDriverMap extends StatelessWidget {
: IntaleqMapType.light,
zoomControlsEnabled: false,
initialCameraPosition: CameraPosition(
target: controller.smoothedLocation ?? locationController.myLocation,
target:
controller.smoothedLocation ?? locationController.myLocation,
zoom: 17,
bearing: controller.smoothedHeading,
tilt: 60,
@@ -67,6 +68,15 @@ class GoogleDriverMap extends StatelessWidget {
position: controller.latLngPassengerLocation,
icon: controller.startIcon,
),
if (!controller.isRideStarted &&
controller.upcomingPathPoints.isNotEmpty &&
controller.walkIcon != null)
Marker(
markerId: const MarkerId('walk_end_marker'),
position: controller.upcomingPathPoints.last,
icon: controller.walkIcon!,
anchor: const Offset(0.5, 0.5),
),
if (controller.latLngPassengerDestination.latitude != 0 ||
controller.latLngPassengerDestination.longitude != 0)
Marker(

View File

@@ -139,4 +139,42 @@ class MarkerGenerator {
await image.toByteData(format: ui.ImageByteFormat.png);
return InlqBitmap.fromBytes(data!.buffer.asUint8List());
}
// دالة لرسم ماركر المشي
static Future<InlqBitmap> createWalkMarker() async {
final ui.PictureRecorder pictureRecorder = ui.PictureRecorder();
final Canvas canvas = Canvas(pictureRecorder);
const double size = 60.0;
final Paint paint = Paint()..color = const Color(0xFF0288D1);
final Paint borderPaint = Paint()
..color = Colors.white
..style = PaintingStyle.stroke
..strokeWidth = 3.0;
canvas.drawCircle(const Offset(size / 2, size / 2), size / 2.5, paint);
canvas.drawCircle(const Offset(size / 2, size / 2), size / 2.5, borderPaint);
TextPainter iconPainter = TextPainter(textDirection: TextDirection.ltr);
iconPainter.text = TextSpan(
text: String.fromCharCode(Icons.directions_walk.codePoint),
style: TextStyle(
fontSize: 30.0,
fontFamily: Icons.directions_walk.fontFamily,
color: Colors.white,
),
);
iconPainter.layout();
iconPainter.paint(
canvas,
Offset((size - iconPainter.width) / 2, (size - iconPainter.height) / 2),
);
final ui.Image image = await pictureRecorder
.endRecording()
.toImage(size.toInt(), size.toInt());
final ByteData? data =
await image.toByteData(format: ui.ImageByteFormat.png);
return InlqBitmap.fromBytes(data!.buffer.asUint8List());
}
}

View File

@@ -96,7 +96,7 @@ class CardSeferWalletDriver extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'رصيد انطلق',
'رصيد سيرو',
style: AppStyle.headTitle.copyWith(
fontFamily: 'Amiri', // خط يوحي بالفخامة
color: Colors.white,

View File

@@ -199,7 +199,7 @@ class ComplaintPage extends StatelessWidget {
leading: const Icon(
Icons.support_agent_outlined,
color: AppColor.primaryColor),
title: Text("Intaleq's Response".tr,
title: Text("Siro's Response".tr,
style: AppStyle.title),
subtitle: Text(
controller.driverReport?['body']

View File

@@ -259,7 +259,7 @@ void showShamCashInput() {
child: TextField(
controller: nameController,
decoration: InputDecoration(
hintText: "مثال: intaleq",
hintText: "مثال: siro",
hintStyle: TextStyle(color: Colors.grey[400], fontSize: 13),
border: InputBorder.none,
prefixIcon: const Icon(Icons.person_outline_rounded,
@@ -461,7 +461,7 @@ class PersonalInfoCard extends StatelessWidget {
label: 'Phone Number'.tr,
value: data['phone'] ?? ''),
if (data['email'] != null &&
data['email'].toString().contains('intaleqapp')) ...[
data['email'].toString().contains('siroapp')) ...[
TextFormField(
controller: controller.emailController,
keyboardType:

View File

@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';
import '../../constant/colors.dart';
import '../../main.dart';
// ─────────────────────────────────────────────────────────────────────────────
// Snackbar variant definition
@@ -253,6 +254,23 @@ SnackbarController _show(_SnackVariant variant, String message) {
HapticFeedback.selectionClick();
}
final BuildContext? context = Get.context ?? navigatorKey.currentContext;
if (context != null) {
final overlay = Overlay.maybeOf(context);
if (overlay == null) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
backgroundColor: Colors.transparent,
elevation: 0,
padding: EdgeInsets.zero,
content: _SnackContent(message: message, variant: variant),
duration: const Duration(seconds: 4),
),
);
return SnackbarController(GetSnackBar(title: '', message: ''));
}
}
return Get.snackbar(
'',
'',
@@ -261,7 +279,6 @@ SnackbarController _show(_SnackVariant variant, String message) {
margin: EdgeInsets.zero,
padding: EdgeInsets.zero,
duration: const Duration(seconds: 4),
animationDuration: const Duration(milliseconds: 380),
barBlur: 0,
overlayBlur: 0,
overlayColor: Colors.transparent,