43 lines
1.2 KiB
Dart
43 lines
1.2 KiB
Dart
import 'dart:async';
|
|
import 'package:app_links/app_links.dart';
|
|
import 'package:get/get.dart';
|
|
|
|
class DeepLinkController extends GetxController {
|
|
final _appLinks = AppLinks();
|
|
StreamSubscription<Uri>? _linkSubscription;
|
|
|
|
// تخزين الرابط الخام (URL) ليتم معالجته لاحقاً في MapPassengerController
|
|
final Rx<String?> rawDeepLink = Rx<String?>(null);
|
|
|
|
@override
|
|
void onInit() {
|
|
super.onInit();
|
|
initDeepLinks();
|
|
}
|
|
|
|
Future<void> initDeepLinks() async {
|
|
// الاستماع للروابط والتطبيق يعمل في الخلفية
|
|
_linkSubscription = _appLinks.uriLinkStream.listen((uri) {
|
|
print('🔗 Received deep link (Stream): $uri');
|
|
rawDeepLink.value = uri.toString();
|
|
});
|
|
|
|
// الاستماع للروابط إذا كان التطبيق مغلقاً تماماً (Cold Start)
|
|
try {
|
|
final initialUri = await _appLinks.getInitialLink();
|
|
if (initialUri != null) {
|
|
print('🔗 Received initial deep link (Cold Start): $initialUri');
|
|
rawDeepLink.value = initialUri.toString();
|
|
}
|
|
} catch (e) {
|
|
print('Error getting initial link: $e');
|
|
}
|
|
}
|
|
|
|
@override
|
|
void onClose() {
|
|
_linkSubscription?.cancel();
|
|
super.onClose();
|
|
}
|
|
}
|