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

Flutter webview_flutter页面缺失且无法交互(如打开侧边栏)求助

WebView Flutter 内容缺失与交互失效问题解决办法

下面是针对你遇到的网页内容缺失、无法交互问题的几个常见解决方向:

  • 启用JavaScript
    绝大多数现代网页依赖JavaScript渲染内容和实现交互,显式开启JS支持即可:

    controller = WebViewController()
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..loadRequest(Uri.parse('https://www.*******.com/'));
    
  • 设置适配的用户代理(UA)
    部分网站会根据用户代理判断设备类型,返回不同页面版本。如果默认UA被识别为非移动端,可能导致内容或交互异常,可手动设置移动端UA:

    controller = WebViewController()
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..setUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1')
      ..loadRequest(Uri.parse('https://www.*******.com/'));
    
  • 启用DOM存储与缓存
    部分页面需要DOM存储保存状态或加载缓存内容,开启相关配置:

    controller = WebViewController()
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..setDomStorageEnabled(true)
      ..setCacheMode(WebViewCacheMode.loadDefault)
      ..loadRequest(Uri.parse('https://www.*******.com/'));
    
  • 处理页面导航与交互请求
    侧边栏这类交互可能涉及新窗口打开或自定义导航,通过NavigationDelegate处理:

    controller = WebViewController()
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..setNavigationDelegate(
        NavigationDelegate(
          onNavigationRequest: (request) {
            return NavigationDecision.navigate;
          },
          onWebResourceError: (error) {
            print('资源加载错误: ${error.description}');
          },
        ),
      )
      ..loadRequest(Uri.parse('https://www.*******.com/'));
    

完整修改后的代码

late final WebViewController controller;

@override
void initState() {
  super.initState();
  controller = WebViewController()
    ..setJavaScriptMode(JavaScriptMode.unrestricted)
    ..setDomStorageEnabled(true)
    ..setUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1')
    ..setNavigationDelegate(
      NavigationDelegate(
        onNavigationRequest: (request) => NavigationDecision.navigate,
        onWebResourceError: (error) => print('资源加载错误: ${error.description}'),
      ),
    )
    ..loadRequest(Uri.parse('https://www.*******.com/'));
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: WebViewWidget(
      controller: controller,
    ),
  );
}

内容的提问来源于stack exchange,提问作者Mert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:05:01