You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter WebView无法打开:net::ERR_UNKNOWN_URL_SCHEME问题求助

解决Flutter WebView中net::ERR_UNKNOWN_URL_SCHEME错误

错误原因

当WebView尝试加载非HTTP/HTTPS协议的URL(如intent://、market://等自定义或系统Scheme)时,会触发该错误。Firebase动态链接跳转后可能唤起这类Scheme,而WebView默认不支持处理这类非标准网络协议。

解决方案

通过拦截WebView的导航请求,区分协议类型:对HTTP/HTTPS链接继续用WebView加载,对其他Scheme则调用原生系统能力打开。

步骤1:添加依赖

在pubspec.yaml中添加url_launcher插件,用于处理非HTTP/HTTPS链接的打开:

dependencies:
  flutter:
    sdk: flutter
  webview_flutter: ^4.0.0 # 替换为你使用的插件版本
  url_launcher: ^6.1.0

步骤2:修改WebView代码

使用navigationDelegate拦截导航请求,做协议判断和处理:

import 'package:url_launcher/url_launcher.dart';

// ... 你的页面代码
SafeArea(
  child: Scaffold(
    appBar: AppBar(
      backgroundColor: Palette.primary,
      elevation: 0,
      title: Text(
        "Payment Checkout",
        style: Styles.designText(bold: false, size: 14, color: Palette.light),
      ),
    ),
    body: Padding(
      padding: const EdgeInsets.all(12.0),
      child: WebViewPlus(
        onWebViewCreated: (controller) {
          // 可选:加载你的Firebase动态链接
          // controller.loadUrl("你的Firebase动态链接地址");
        },
        initialUrl: "https://mesomb.hachther.com/en/web/payment/CM/?widget=253",
        javascriptMode: JavascriptMode.unrestricted,
        // 拦截导航请求并处理不同协议
        navigationDelegate: (NavigationRequest request) async {
          final url = request.url;
          // HTTP/HTTPS协议继续由WebView加载
          if (url.startsWith('http://') || url.startsWith('https://')) {
            return NavigationDecision.navigate;
          }
          // 其他协议调用原生能力打开
          if (await canLaunchUrl(Uri.parse(url))) {
            await launchUrl(Uri.parse(url));
          }
          // 阻止WebView加载非标准协议链接
          return NavigationDecision.prevent;
        },
      ),
    ),
  ),
);

步骤3:Android端额外配置(可选)

如果涉及intent://等Android特定Scheme,需在AndroidManifest.xml中添加应用查询权限,确保能唤起其他应用:

<queries>
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="https" />
  </intent>
  <!-- 根据业务需求添加其他Scheme的查询规则 -->
</queries>

注意事项

  • 验证Firebase动态链接的跳转逻辑,确认目标链接不会触发未处理的特殊Scheme。
  • 测试时覆盖所有可能的跳转场景,避免遗漏异常情况。

内容的提问来源于stack exchange,提问作者Baimam Boukar Jean Jacques

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 08:24:17