2026-02-20-overlay

This commit is contained in:
Hamza-Ayed
2026-02-20 17:55:51 +03:00
parent 0b826f6e01
commit d697de9c25
206 changed files with 2635 additions and 1359 deletions

View File

@@ -3,7 +3,6 @@ import 'dart:convert';
import 'dart:io';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter_overlay_window/flutter_overlay_window.dart';
import 'package:get/get.dart';
import 'package:geolocator/geolocator.dart' as geo;
import 'package:google_maps_flutter/google_maps_flutter.dart';
@@ -13,6 +12,7 @@ import 'package:permission_handler/permission_handler.dart' as ph;
import 'package:sefer_driver/views/home/Captin/orderCaptin/order_request_page.dart';
import 'package:socket_io_client/socket_io_client.dart' as IO;
import 'package:sefer_driver/constant/table_names.dart';
import 'package:trip_overlay_plugin/trip_overlay_plugin.dart';
import '../../constant/box_name.dart';
import '../../constant/links.dart';
import '../../main.dart';
@@ -282,14 +282,23 @@ class LocationController extends GetxController with WidgetsBindingObserver {
Map<String, dynamic> rideData, String source) async {
print("📦 Socket Order Received from ($source)");
// 🔴 1. التحقق من حالة التطبيق قبل أي شيء 🔴
bool isAppInForeground = box.read(BoxName.isAppInForeground) ?? false;
if (!isAppInForeground) {
print(
"🛑 التطبيق في الخلفية. السوكيت سيتجاهل التوجيه ويترك المهمة للـ Overlay.");
return; // 👈 هذا السطر يمنع السوكيت من إكمال العمل وفتح الصفحة
}
try {
// 1. التحقق من صحة البيانات
// 2. التحقق من صحة البيانات
if (rideData.isEmpty || !rideData.containsKey('16')) {
print("❌ Socket Error: Invalid Ride Data.");
return;
}
// 2. تجهيز البيانات (DriverList)
// 3. تجهيز البيانات (DriverList)
List<dynamic> driverList = [];
if (rideData.length > 0) {
var sortedKeys = rideData.keys.map((e) => int.tryParse(e) ?? 0).toList()
@@ -298,22 +307,19 @@ class LocationController extends GetxController with WidgetsBindingObserver {
driverList.add(rideData[key.toString()]);
}
}
/////////
// 3. التنقل (باستخدام الاسم لضمان عمل الشرط)
// 4. إغلاق النافذة (إن وجدت بالخطأ) والتنقل
try {
if (await FlutterOverlayWindow.isActive()) {
if (await TripOverlayPlugin.isOverlayActive()) {
print("📲 Closing Overlay because App took control via Socket");
await FlutterOverlayWindow.closeOverlay();
await TripOverlayPlugin.hideOverlay();
}
} catch (e) {
print("Overlay check error: $e");
}
// ✅ هذا الشرط سيعمل الآن بدقة لأننا سنستخدم toNamed
if (Get.currentRoute != '/OrderRequestPage') {
print("🚀 Socket: Navigating to OrderRequestPage...");
// 🔥 التعديل هنا: استخدمنا Get.toNamed بدلاً من Get.to
// هذا يضمن تطابق الاسم مع ما هو موجود في main.dart
Get.toNamed('/OrderRequestPage', arguments: {
'myListString': jsonEncode(driverList),
'DriverList': driverList,