Flutter 3.7.0升级后执行build_runner命令出现参数无效错误
解决Flutter 3.7.0中build_runner报错「Invalid argument(s): name shouldn't end with a '.'」的问题
问题背景
运行命令 flutter packages pub run build_runner watch --delete-conflicting-outputs 时抛出「Invalid argument(s): name shouldn't end with a '.'」错误,异常来自logger.dart文件。该命令在Flutter 3.3.10版本下可正常执行,升级至3.7.0后出现此问题。
原因分析
Flutter 3.7.0配套的Dart SDK(通常为2.19.0及以上版本)对标识符、文件名的命名规范校验更加严格。旧版本SDK中允许的以.结尾的命名(如Logger实例的name参数、生成文件的路径/名称等),在新版本中触发了合法性校验,从而抛出错误。
解决方案
检查并修正
logger.dart相关命名
打开项目中的logger.dart文件(包括build_runner生成的相关代码),排查所有可能以.结尾的内容:- 手动编写的Logger配置中,是否设置了以
.结尾的name参数 - 类名、函数名、变量名等标识符是否存在以
.结尾的情况 - 如果是通过注解生成的代码,检查freezed、json_serializable等注解的配置项,是否生成了不符合规范的命名
- 手动编写的Logger配置中,是否设置了以
清理旧生成文件后重新执行命令
修正命名后,先清理旧的build_runner生成文件,再重新执行命令:flutter packages pub run build_runner clean flutter packages pub run build_runner watch --delete-conflicting-outputs排查第三方logger包兼容性
如果项目依赖第三方logger类包,可能是该包未适配新版本Dart的命名校验。尝试将该包升级至最新版本,若仍无法解决,可暂时锁定包版本至兼容Flutter 3.7.0的版本。
内容的提问来源于stack exchange,提问作者Halil Bulent Orhon
相关产品推荐
相关产品推荐

