diff --git a/lib/src/widgets/flutter_flow_web_view.dart b/lib/src/widgets/flutter_flow_web_view.dart index 3e73f44..c2bdf72 100644 --- a/lib/src/widgets/flutter_flow_web_view.dart +++ b/lib/src/widgets/flutter_flow_web_view.dart @@ -80,18 +80,30 @@ class _FlutterFlowWebViewState extends State { } }, navigationDelegate: (request) async { + final url = request.content.source; + final uri = Uri.tryParse(url); + if (uri == null) { + return NavigationDecision.navigate; + } if (isAndroid) { - if (request.content.source - .startsWith('https://api.whatsapp.com/send?phone')) { - String url = request.content.source; - + if (url.startsWith('https://api.whatsapp.com/send?phone')) { await launchUrl( - Uri.parse(url), + uri, mode: LaunchMode.externalApplication, ); return NavigationDecision.prevent; } } + if (uri.scheme == 'http' || uri.scheme == 'https') { + return NavigationDecision.navigate; + } + if (await canLaunchUrl(uri)) { + await launchUrl( + uri, + mode: LaunchMode.externalApplication, + ); + return NavigationDecision.prevent; + } return NavigationDecision.navigate; }, webSpecificParams: const WebSpecificParams(