import 'dart:io'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:get/get_core/src/get_main.dart'; import 'package:get/get_navigation/src/extension_navigation.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:sefer_driver/views/widgets/error_snakbar.dart'; import 'package:sefer_driver/views/widgets/mydialoug.dart'; import 'background_service.dart'; Future requestNotificationPermission() async { if (Platform.isAndroid) { final androidInfo = await DeviceInfoPlugin().androidInfo; if (androidInfo.version.sdkInt >= 33) { // Android 13+ final status = await Permission.notification.request(); if (!status.isGranted) { print('⚠️ إذن الإشعارات مرفوض'); return; } } } // بعد الحصول على الإذن، ابدأ الخدمة await BackgroundServiceHelper.startService(); } class PermissionsHelper { /// طلب إذن الإشعارات على Android 13+ static Future requestNotificationPermission() async { if (Platform.isAndroid) { final androidInfo = await DeviceInfoPlugin().androidInfo; if (androidInfo.version.sdkInt >= 33) { final status = await Permission.notification.request(); if (status.isDenied) { print('⚠️ إذن الإشعارات مرفوض'); mySnackbarWarning( "يرجى منح صلاحية الإشعارات لضمان وصول الطلبات إليك"); return false; } if (status.isPermanentlyDenied) { print('⚠️ إذن الإشعارات مرفوض بشكل دائم - افتح الإعدادات'); mySnackbarWarning('يرجى فتح الإعدادات وتفعيل صلاحية الإشعارات'); return false; } } } return true; } /// طلب جميع الإذونات المطلوبة static Future requestAllPermissions() async { // إذن الإشعارات (اختياري) await requestNotificationPermission(); // 1. طلب إذن الموقع الأساسي فقط إذا كان مرفوضاً var status = await Permission.location.status; if (status.isDenied) { status = await Permission.location.request(); } if (status.isPermanentlyDenied) { _showSettingsDialog('الموقع'); return false; } return status.isGranted || status.isLimited; } static void _showSettingsDialog(String permissionName) { MyDialog().getDialog( 'صلاحية $permissionName مطلوبة', 'لقد قمت برفض صلاحية $permissionName سابقاً. يرجى تفعيلها من الإعدادات لتمكين التطبيق من العمل.', () async { await openAppSettings(); Get.back(); }, ); } }