使用FVM运行Flutter 3.3.10时遇Dart版本过高错误求助
问题详情
在MacOS环境下使用FVM管理Flutter SDK(版本3.3.10),执行fvm flutter run时出现如下错误:
Error: The specified language version is too high. The highest supported language version is 2.18.
执行dart --version显示Dart SDK版本为2.18.6(stable),该版本与当前Flutter版本匹配。已通过自定义清理脚本清理项目缓存,也执行了dart pub cache clean清理全局Dart缓存,但问题仍未解决。清理脚本如下:
# Run Flutter commands fvm flutter clean fvm flutter pub cache repair fvm flutter pub get # Change to the ios directory cd ios/ # Remove the .symlinks and Pods folders rm -rf .symlinks rm -rf Pods # Run CocoaPods commands pod deintegrate pod cache clean --all pod repo update pod install
可行解决建议
检查并修改项目的Dart语言版本配置
打开项目根目录的pubspec.yaml,找到environment字段,确认其中的Dart SDK版本范围是否高于2.18。例如如果配置是:environment: sdk: '>=2.19.0 <3.0.0'请将其修改为与当前Dart版本兼容的范围,比如:
environment: sdk: '>=2.18.0 <3.0.0'保存后重新执行
fvm flutter pub get。排查依赖包的语言版本冲突
部分依赖包可能在自身配置中要求更高的Dart版本,导致整体项目语言版本不兼容。执行fvm dart pub outdated查看所有依赖的版本状态,替换那些明确要求Dart 2.19+的依赖为兼容Flutter 3.3.10的旧版本。如果无法快速定位冲突依赖,可以尝试临时注释部分依赖,逐步排查出引发问题的包。验证FVM的环境上下文正确性
执行fvm flutter --version确认当前终端使用的Flutter和Dart版本是否为3.3.10和2.18.6。若版本不符,说明FVM的环境变量未正确生效,可尝试重新打开终端,或执行fvm use 3.3.10 --global(需根据需求选择是否全局应用该版本)。清理FVM管理的Flutter SDK缓存
除了项目缓存,清理FVM对应版本SDK的自带缓存:cd ~/fvm/versions/3.3.10 flutter clean flutter pub cache clean完成后回到项目根目录,重新执行
fvm flutter pub get。清理iOS端编译缓存
若问题出现在iOS编译阶段,打开Xcode执行Product > Clean Build Folder,或者删除iOS目录下的Runner.xcworkspace文件,再重新运行原清理脚本中的iOS相关步骤。
内容的提问来源于stack exchange,提问作者Sören Nehls

