Flutter构建失败:sms_autofill库非const构造器调用错误
解决sms_autofill-2.2.0的const构造器错误
问题分析
这个错误是因为sms_autofill-2.2.0库的代码和你当前使用的Flutter SDK版本不兼容——SDK对const表达式的检查规则更严格,而库的第73行在需要const的位置调用了非const构造器,导致Gradle编译失败。
可行解决方案
方案1:升级sms_autofill到最新稳定版
打开项目的pubspec.yaml文件,把sms_autofill的版本号替换成当前最新版(可以去pub.dev查最新号),比如:
dependencies: sms_autofill: ^2.3.0 # 替换为实际最新版本号
然后执行命令更新依赖:
flutter pub get
新版本基本都会修复这类语法兼容问题,这是最稳妥的解决方式。
方案2:手动修改库文件(临时应急)
如果暂时没法升级库,可以直接修改本地缓存的库代码:
- 找到路径:
flutter/.pub-cache/hosted/pub.dartlang.org/sms_autofill-2.2.0/lib/sms_autofill.dart - 定位到第73行,要么去掉外层的
const关键字,要么给内部的构造器加上const(如果该构造器支持const)
比如原代码如果是:
const SomeWidget(NonConstConstructor())
改成:
SomeWidget(NonConstConstructor()) // 去掉外层const
或者构造器支持的话改成:
const SomeWidget(const NonConstConstructor())
修改完后执行flutter clean再重新编译。
方案3:降级Flutter SDK版本
如果必须用这个旧版库,可以降级到和它兼容的Flutter版本,比如Flutter 2.8.x系列:
flutter downgrade 2.8.1
注意事项
- 手动改库文件是临时方案,下次执行
flutter pub get会覆盖修改,优先选升级库版本。 - 升级/降级SDK前最好备份项目,避免出现其他依赖冲突。
内容的提问来源于stack exchange,提问作者Roy
相关产品推荐
相关产品推荐

