运行fvm flutter doctor出现类型不匹配、VM标识无法识别报错如何解决
报错修复方案
问题1:VSCode执行fvm flutter doctor空安全类型不匹配报错
原因
Flutter 1.22.6 属于非空安全时代的旧版本,自带的flutter_tool工具代码没有做空安全适配,读取Windows系统LOCALAPPDATA环境变量时返回可空的String?类型,和代码里要求的非空String类型冲突,触发编译报错。
修复步骤
- 打开FVM对应版本的报错文件:
fvm/versions/1.22.6/packages/flutter_tools/lib/src/android/android_studio.dart - 定位到379行,把代码里的
globals.platform.environment['LOCALAPPDATA']修改为globals.platform.environment['LOCALAPPDATA']!,新增的!为空断言运算符,强制标记该环境变量为非空(Windows系统默认存在该环境变量,不会出现空指针问题) - 执行
fvm flutter clean清除缓存,再重新执行fvm flutter doctor,此时会重新编译flutter_tool工具,该报错会消失。
问题2:Android Studio执行相同命令报Unrecognized flags: verbosity错误
原因
你当前Android Studio安装的Flutter插件版本过高,高版本插件会给flutter命令传递旧版本Flutter不支持的verbosity参数,导致参数识别失败。
修复步骤
- 打开Android Studio设置→插件→已安装插件,找到Flutter插件,卸载当前高版本,安装2020年底发布的50.x版本的历史Flutter插件,和Flutter 1.22.6版本适配
- 临时解决方案可以不用Android Studio内置终端执行命令,直接使用系统终端调用fvm执行flutter命令,不会出现参数不匹配问题。
通用备选方案
如果你的项目没有强制依赖Flutter 1.22.6版本,直接将项目适配的Flutter版本升级到2.0及以上的空安全版本,两个问题都会自动解决,不需要手动修改源码或降级插件。
内容的提问来源于stack exchange,提问作者Whezer
相关产品推荐
相关产品推荐

