Flutter应用iOS物理设备上HTTP及WebSocket请求缓慢问题咨询
问题根因确认
你遇到的是Flutter 2.6预发布版本在iOS物理设备上的已知原生网络栈适配bug,该问题触发条件如下:
- 仅影响iOS物理设备,模拟器不受影响
- 网络请求固定出现10秒延迟,同时覆盖HTTP/HTTPS、WebSocket所有网络请求类型
- 仅出现在2021年8-9月的master/dev渠道版本,正式稳定版无该问题
触发原因
该问题来源于Dart SDK针对iOS平台getaddrinfo接口的适配缺陷:当网络环境同时存在IPv4/IPv6双栈时,Dart的DNS解析逻辑会优先等待IPv6解析超时(默认超时时间为10秒)后才会 fallback 到IPv4解析,最终表现为固定10秒的网络延迟。
iOS模拟器之所以无异常,是因为模拟器复用了MacOS系统的DNS解析能力,没有走Dart内置的iOS端DNS解析逻辑。
修复方案
你可以选择以下任意一种方案解决:
- 升级Flutter版本:该问题已经在2021年9月下旬的master渠道版本中修复,直接拉取最新master分支代码重新编译即可
- 临时规避方案(无需升级):在iOS项目的Info.plist中添加如下配置,禁用Dart的内置DNS解析,强制使用iOS系统原生网络栈:
<key>flutter_disable_dart_proxied_lookup</key> <true/>
- 切换到稳定渠道:如果不需要使用master渠道的实验性特性,建议切换到Flutter稳定渠道,避免遇到此类预发布版本的缺陷。
验证方式
修改完成后清理项目缓存重新编译:
flutter clean flutter pub get
在iOS物理设备上测试网络请求,10秒延迟会完全消失。
内容的提问来源于stack exchange,提问作者Victor Durojaiye
相关产品推荐
相关产品推荐

