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

Flutter中WebView嵌套在Scaffold内无法加载页面该如何解决?

问题根因

该问题由Flutter布局约束规则导致:

  • Column组件在垂直方向会给子元素提供无上限的高度约束
  • WebView默认会尝试占满父组件提供的可用高度,在无界高度约束下无法计算自身所需尺寸,因此无法完成渲染和页面加载
  • 当WebView直接作为Scaffold的body参数时,Scaffold会给body传入明确的屏幕宽高约束,所以WebView可以正常加载

解决方案

用Expanded组件包裹WebView,Expanded会自动占用Column内除了固定高度组件外的全部剩余空间,给WebView提供明确的高度约束。
修改后的代码如下:

return MaterialApp(
  home: Scaffold(
    body: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        TextButton(
          onPressed: () {
            // 按钮逻辑
          },
          child: const Text('Print page'),
        ),
        // 用Expanded包裹WebView
        Expanded(
          child: WebView(
            initialUrl: 'https://flutter.dev',
          ),
        )
      ],
    ),
  ),
);

如果需要给WebView指定固定高度,也可以用SizedBox包裹WebView并设置具体的height参数,效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:48:03