import 'package:android_intent_plus/android_intent.dart'; import 'package:platform/platform.dart'; import 'package:sonnat/core/utils/utilities.dart'; import 'package:url_launcher/url_launcher.dart'; class UrlLauncher { Future launchInBrowser(String url) async { try { await launchUrl( Uri.parse(url), mode: LaunchMode.externalApplication, ); } on Exception catch (_) { if (Utilities.isAndroid) { AndroidIntent intent = AndroidIntent(action: 'action_view', package: 'com.habibapp.habib', data: url); await intent.launch(); } } } Future launchInWebViewOrVC(String url) async { if (await canLaunchUrl(Uri.parse(url))) { await launch( url, forceSafariVC: true, forceWebView: true, headers: {'my_header_key': 'my_header_value'}, ); } else { throw 'Could not launch $url'; } } Future launchInWebViewWithJavaScript(String url) async { if (await canLaunchUrl(Uri.parse(url))) { await launch( url, forceSafariVC: true, forceWebView: true, enableJavaScript: true, ); } else { throw 'Could not launch $url'; } } Future launchInWebViewWithDomStorage(String url) async { if (await canLaunchUrl(Uri.parse(url))) { await launch( url, forceSafariVC: true, forceWebView: true, enableDomStorage: true, ); } else { throw 'Could not launch $url'; } } Future launchUniversalLinkIos(String url) async { if (await canLaunchUrl(Uri.parse(url))) { final bool nativeAppLaunchSucceeded = await launch( url, forceSafariVC: false, universalLinksOnly: true, ); if (!nativeAppLaunchSucceeded) { await launchUrl(Uri.parse(url)); } } } Future makePhoneCall(String url) async { await launchUrl(Uri.parse('tel:$url')); } Future textTo(String url, String body) async { if (const LocalPlatform().isAndroid) { var uri = 'sms:+$url?$body'; await launchUrl(Uri.parse(uri)); } else if (const LocalPlatform().isIOS) { var uri = 'sms:00$url?$body'; await launchUrl(Uri.parse(uri)); } } }