2026-02-20-overlay
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user