From d9139d2500f57ae32416d4e71f68ee7387719131 Mon Sep 17 00:00:00 2001 From: Jiun Kim Date: Tue, 22 Jul 2025 18:12:25 +0900 Subject: [PATCH] feat: Navigation handling with URI validation and external launch --- lib/src/widgets/flutter_flow_web_view.dart | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) 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(