Flutter WebView在iOS真机白屏但模拟器运行正常问题求助
iOS 真机 WebView 白屏问题排查方案
- 首先检查
initialUrl协议配置,你当前代码填写的域名缺少 https 协议头,iOS 模拟器会默认补全协议发起请求,真机的安全校验机制不会自动补全,会直接导致请求失败白屏,修改后的代码参考:
WebView( initialUrl: "https://google.com", javascriptMode: JavascriptMode.unrestricted, )
- 检查 iOS 项目的 ATS(应用传输安全) 策略配置,iOS 默认禁止所有 HTTP 请求,未配置的情况下加载 HTTP 资源会直接被拦截,需要在项目
ios/Runner/Info.plist中添加如下配置:
<key>NSAppTransportSecurity</key> <dict> <!-- 允许所有HTTP请求,测试阶段可以开启,正式上线建议替换为下面的白名单配置 --> <key>NSAllowsArbitraryLoads</key> <true/> <!-- 正式环境白名单配置示例 <key>NSExceptionDomains</key> <dict> <key>google.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> --> </dict>
- 检查 WebView 的布局约束,如果你使用的是 Flutter 框架,未给 WebView 明确指定宽高的情况下,部分 iOS 真机版本会出现渲染尺寸为0的白屏问题,可以在外层套
Expanded或者SizedBox组件明确宽高:
SizedBox( width: double.infinity, height: double.infinity, child: WebView( initialUrl: "https://google.com", javascriptMode: JavascriptMode.unrestricted, ), )
- 可以通过 Xcode 连接真机运行项目,查看控制台输出的具体错误日志,也可以用 Safari 开发者工具连接真机的 WebView 实例,查看网络请求、页面渲染的具体报错信息定位问题。
内容的提问来源于stack exchange,提问作者princeonwhitemb
相关产品推荐
相关产品推荐

