import 'dart:io'; import 'package:flutter/services.dart'; import '../print.dart'; /// خدمة Android Live Update (Progress Style) /// /// توفر واجهة موحدة للتحديث المباشر لحالة الرحلة على Android /// باستخدام NotificationCompat مع Progress Style (Android 16+) /// /// هذه الخدمة مشابهة لـ [IosLiveActivityService] ولكن لمنصة Android class AndroidLiveUpdateService { static const MethodChannel _channel = MethodChannel('siro/android_live_update'); static bool _isSupported = false; static bool _isActive = false; /// التحقق من دعم الجهاز للخدمة /// تعود true إذا كان Android 11+ (API 30+) static Future init() async { if (!Platform.isAndroid) return false; try { final supported = await _channel.invokeMethod('isSupported'); _isSupported = supported ?? false; Log.print( '📱 AndroidLiveUpdateService initialized: supported=$_isSupported'); return _isSupported; } catch (e) { Log.print('❌ AndroidLiveUpdateService init error: $e'); _isSupported = false; return false; } } /// بدء التحديث المباشر للرحلة (عند قبول السائق) static Future startLiveUpdate({ required String rideId, required String driverName, required String etaText, required double progress, required String carDetails, }) async { if (!Platform.isAndroid || !_isSupported) return; try { await _channel.invokeMethod('startLiveUpdate', { 'rideId': rideId, 'driverName': driverName, 'etaText': etaText, 'progress': progress, 'carDetails': carDetails, }); _isActive = true; Log.print('✅ Android Live Update Started'); } catch (e) { Log.print('❌ AndroidLiveUpdateService startLiveUpdate error: $e'); } } /// تحديث التقدم والوقت المتبقي static Future updateProgress({ required double progress, required String etaText, }) async { if (!Platform.isAndroid || !_isSupported || !_isActive) return; try { await _channel.invokeMethod('updateProgress', { 'progress': progress, 'etaText': etaText, }); } catch (e) { Log.print('❌ AndroidLiveUpdateService updateProgress error: $e'); } } /// تحديث حالة الرحلة بالكامل static Future updateStatus({ required String status, required String driverName, required String etaText, required double progress, String carDetails = '', }) async { if (!Platform.isAndroid || !_isSupported || !_isActive) return; try { await _channel.invokeMethod('updateStatus', { 'status': status, 'driverName': driverName, 'etaText': etaText, 'progress': progress, 'carDetails': carDetails, }); Log.print('✅ Android Live Update Status: $status'); } catch (e) { Log.print('❌ AndroidLiveUpdateService updateStatus error: $e'); } } /// إنهاء التحديث المباشر وإزالة الإشعار static Future endLiveUpdate() async { if (!Platform.isAndroid || !_isSupported || !_isActive) return; try { await _channel.invokeMethod('endLiveUpdate'); _isActive = false; Log.print('✅ Android Live Update Ended'); } catch (e) { Log.print('❌ AndroidLiveUpdateService endLiveUpdate error: $e'); } } /// التحقق مما إذا كان التحديث نشطاً static bool get isActive => _isActive; /// إعادة تعيين الحالة static void reset() { _isActive = false; } }