Flutter项目搭建时chewie与chewie_audio包编译报错问题咨询
Flutter iOS构建chewie依赖报错解决方案
报错根因
所有编译错误均为版本不匹配导致,和Flutter通道选择无关:
- 旧版本
chewie 0.9.10使用的Scaffold参数resizeToAvoidBottomPadding,已在新版Flutter中被废弃,替换为resizeToAvoidBottomInset - 旧版本chewie调用的
BuildContext.inheritFromWidgetOfExactType方法,已在新版Flutter中被移除,替换为dependOnInheritedWidgetOfExactType - 旧版本
chewie_audio 1.0.0+1调用dependOnInheritedWidgetOfExactType时的传参方式,不符合新版Flutter的API签名要求
操作步骤
- 第一步:定位间接依赖来源
由于chewie仅存在于pubspec.lock,说明它是被其他依赖间接拉取的旧版本,执行以下命令溯源拉取路径:flutter pub deps --no-dev | grep -E "chewie|chewie_audio" - 第二步:添加强制版本覆盖
在项目根目录的pubspec.yaml中,添加dependency_overrides配置,强制将chewie相关包升级到适配新版Flutter的版本:# 放在所有dependencies、dev_dependencies声明的后面 dependency_overrides: chewie: ^1.7.5 chewie_audio: ^1.5.1 - 第三步:清理缓存重新拉取依赖
依次执行以下命令,清除本地残留的旧版本依赖缓存,避免旧包参与编译:flutter clean flutter pub get - 第四步:重新构建运行
依赖拉取完成无冲突后,直接执行构建命令即可:flutter run
异常场景处理
如果溯源后发现是某一第三方业务包硬编码锁死了上述两个旧版chewie的版本,优先将该第三方业务包升级到最新版本,主流媒体相关插件早已完成对新版Flutter的API适配。
内容的提问来源于stack exchange,提问作者Rahul Mishra
相关产品推荐
相关产品推荐

