如何解决Flutter报错Execution failed for task ':app:compileFlutterBuildDebug'
报错根因
这个错误是你项目依赖的states_rebuilder 1.3.2版本使用了Flutter框架已废弃移除的API方法ancestorInheritedElementForWidgetOfExactType导致的。该方法在Flutter 1.12版本之后就被正式删除,替换为getElementForInheritedWidgetOfExactType,你之前的版本切换、重拉依赖操作没有适配第三方包的API兼容问题,因此无法生效。
解决方案
- 方案一(最推荐):升级states_rebuilder依赖版本
在你的项目pubspec.yaml文件中,将states_rebuilder的版本号升级到适配你当前Flutter版本的最新稳定版,修改完成后依次执行flutter clean、flutter pub get,重新编译项目即可解决。 - 方案二:手动修改旧版本states_rebuilder源码
如果你必须保留当前1.3.2版本的states_rebuilder,可以直接修改第三方包的报错代码:找到报错提示路径下的states_rebuilder-1.3.2/lib/src/bloc_provider.dart文件,将第22行的context.ancestorInheritedElementForWidgetOfExactType(type)?.widget替换为context.getElementForInheritedWidgetOfExactType(type)?.widget,保存后重新编译项目即可。 - 方案三(不推荐):降级Flutter版本
将你的Flutter版本降级到1.12及之前的版本,也可以兼容旧版states_rebuilder的API,但超老版本Flutter会存在大量其他兼容性问题,不建议使用。
内容的提问来源于stack exchange,提问作者enicodai
相关产品推荐
相关产品推荐

