Flutter编译报错:DateTime类无'zyear' getter,构建失败如何解决?
错误产生原因
- 核心冲突为intl 0.16.1版本与高版本Flutter/Dart SDK不兼容:Dart 2.12及以上版本已经正式移除了
dart:core中DateTime类的废弃属性zyear,但intl 0.16.1的内部源码仍在调用该属性,编译时直接抛出getter 'zyear' isn't defined的语法错误。 - 后续的构建失败属于连锁报错,是Flutter编译任务检测到语法错误后返回非零退出码导致的,根源仍为intl包的版本兼容问题。
修复方案
方案1:升级intl依赖版本(推荐)
如果你的项目直接依赖了intl包,直接修改根目录下的pubspec.yaml文件,将intl的版本约束升级到0.17.0及以上即可:
dependencies: # 可替换为当前最新的稳定版 intl: ^0.18.1
修改完成后执行flutter pub get重新拉取依赖,再启动编译即可解决问题。
方案2:强制覆盖intl版本
如果你的项目没有直接依赖intl,是依赖的其他第三方库引入了0.16.1版本的intl,可在pubspec.yaml中添加依赖覆盖配置,强制全项目使用兼容的intl版本:
dependency_overrides: intl: ^0.17.0
执行flutter pub get后重新编译即可。
方案3:降级Flutter SDK(不推荐)
如果项目历史约束无法升级intl版本,可将Flutter SDK降级到2.0.0以下的旧版本,该版本配套的Dart SDK仍保留DateTime.zyear属性,可兼容intl 0.16.1版本。
内容的提问来源于stack exchange,提问作者Mohammed Nadim
相关产品推荐
相关产品推荐

