import 'package:url_launcher/url_launcher.dart'; enum LaunchType { tel, sms, email, link } const launchTypeValues = { LaunchType.tel: "tel:", LaunchType.sms: "sms:", LaunchType.email: "mailto:", LaunchType.link: '' }; class LaunchUtils { ///自定义Launch方法 static Future customLaunch({ required String urlString, LaunchType launchType = LaunchType.link, bool enableJavaScript = false, bool enableDomStorage = false, Map headers = const {}, LaunchMode mode = LaunchMode.externalApplication, String? webOnlyWindowName, }) { return launchUrl( Uri.parse('${launchTypeValues[launchType]}$urlString'), webViewConfiguration: WebViewConfiguration( enableJavaScript: enableJavaScript, enableDomStorage: enableDomStorage, headers: headers, ), mode: mode, webOnlyWindowName: webOnlyWindowName, ); } ///判断是否打开链接 static Future customCanLaunch( String urlString, { LaunchType launchType = LaunchType.link, }) async { return canLaunchUrl(Uri.parse('${launchTypeValues[launchType]}$urlString')); } }