Files
flutter_common/lib/utils/launch_utils.dart

43 lines
1.2 KiB
Dart
Raw Normal View History

2025-10-20 10:44:59 +08:00
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<bool> customLaunch({
required String urlString,
LaunchType launchType = LaunchType.link,
bool enableJavaScript = false,
bool enableDomStorage = false,
Map<String, String> headers = const <String, String>{},
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<bool> customCanLaunch(
String urlString, {
LaunchType launchType = LaunchType.link,
}) async {
return canLaunchUrl(Uri.parse('${launchTypeValues[launchType]}$urlString'));
}
}