import 'package:firebase_dynamic_links/firebase_dynamic_links.dart'; import 'package:no_context_navigation/no_context_navigation.dart'; class DynamicLinkService { Future handleDynamicLinks() async { // 1. Get the initial dynamic link if the app is opened with a dynamic link final PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.getInitialLink(); // 2. handle link that has been retrieved _handleDeepLink(data); // 3. Register a link callback to fire if the app is opened up from the background // using a dynamic link. FirebaseDynamicLinks.instance.onLink( onSuccess: (PendingDynamicLinkData dynamicLink) async { // 3a. handle link that has been retrieved _handleDeepLink(dynamicLink); }, onError: (OnLinkErrorException e) async { print('Link Failed: ${e.message}'); }); } void _handleDeepLink(PendingDynamicLinkData data) { final Uri deepLink = data?.link; if (deepLink != null) { try { if (deepLink.pathSegments.contains('resetpassword')) { var guid = deepLink.queryParameters['resetguid']; if (guid != null) { navService.pushNamed('/resetpassword', args: guid); } } else if (deepLink.pathSegments.contains('referral')) { var guid = deepLink.queryParameters['referrer']; if (guid != null) { navService.pushNamed('/login', args: guid); } } } catch (e) { print(e); } } } }