Flutter应用在iOS模拟器运行时DevTools预编译失败及语言版本过高问题的解决方法
你遇到的问题根源很明确:切换Flutter SDK后,当前版本对应的Dart 2.13,和项目依赖的shelf_proxy、http等包要求的Dart语言版本不兼容,直接导致了DevTools预编译失败。下面是分步解决方法:
步骤1:确认当前环境的Dart版本
先运行这条命令,明确你当前使用的Flutter和Dart版本:
flutter --version
从错误日志能确定,你的Dart版本是2.13,而shelf_proxy-1.0.1、http-0.13.4这些依赖包需要更高的Dart版本,所以出现了版本不匹配的报错。
步骤2:选择适配方案(二选一即可)
方案A:升级Flutter SDK(推荐,长期维护更省心)
如果你的项目没有必须停留在旧SDK的限制,直接升级到最新稳定版,就能获得更高版本的Dart,兼容这些依赖:
flutter upgrade
升级完成后,重新运行flutter pub get,再尝试启动项目。
方案B:降级依赖包适配旧Dart版本
如果无法升级SDK,需要修改pubspec.yaml中的依赖版本,替换为兼容Dart 2.13的版本:
- 将
http依赖改为兼容版本:http: ^0.13.0 - 将
shelf_proxy依赖改为兼容版本:shelf_proxy: ^0.2.4
修改后执行:
flutter pub get
步骤3:清理缓存,避免残留问题
为了彻底清除旧依赖的缓存,执行以下命令:
flutter pub cache clean flutter clean
如果是iOS项目,还需要进入iOS目录清理Pods:
cd ios rm -rf Pods Podfile.lock pod install cd ..
步骤4:重新启动项目
完成以上操作后,再次尝试在iOS模拟器上启动Flutter应用,应该就能解决预编译失败的问题了。
附你提供的错误日志:
预编译devtools:devtools失败:
../../../../../.pub-cache/hosted/pub.dartlang.org/shelf_proxy-1.0.1/lib/shelf_proxy.dart:1:1: 错误:指定的语言版本过高。最高支持的语言版本为2.13。
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
^
../../../../../.pub-cache/hosted/pub.dartlang.org/http-0.13.4/lib/http.dart:1:1: 错误:指定的语言版本过高。最高支持的语言版本为2.13。
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
^
(后续重复错误省略)
内容的提问来源于stack exchange,提问作者Boris

