Android Studio运行Flutter项目时自建文件错误行号打印异常问题
故障原因
- 两份文件字面代码一致但非可见的格式配置不同,导致Dart编译器生成的行号调试映射表出错,是该问题的核心诱因:
- 换行符格式不匹配:Windows环境下Android Studio默认新建文件采用
CRLF(两个字符表示一次换行)作为行尾标记,而从其他项目复制的文件通常使用跨平台通用的LF(单个字符表示一次换行)。部分版本的Flutter SDK处理CRLF换行的文件时存在行号计数缺陷,会出现行号偏移,最终错误将问题定位到第一行。 - UTF-8 BOM头干扰:部分Windows环境的Android Studio默认会给新建文件添加3字节的UTF-8 BOM头(文件开头的隐藏标识字节),Dart编译器处理该类文件时会将BOM头计入文件偏移但不计入行号统计,直接导致所有行号映射错位。
- 换行符格式不匹配:Windows环境下Android Studio默认新建文件采用
- 增量编译缓存异常也可能触发该问题:首次使用新建文件时未清理编译缓存直接运行,Flutter会生成错误的行号映射文件,导致定位失效。
修复方法
- 统一换行符格式:在Android Studio右下角查看当前文件的行尾序列,将新建文件的行尾序列修改为
LF,执行flutter clean清理缓存后重新运行验证。 - 移除BOM头:在Android Studio顶部菜单栏的文件编码设置中,将当前文件编码改为
UTF-8 不带BOM,重新编译即可。 - 深度清理缓存:如果上述操作后仍未恢复,手动删除项目根目录下的
build、.dart_tool文件夹后重新运行项目。
内容的提问来源于stack exchange,提问作者TurkC
相关产品推荐
相关产品推荐

