Flutter构建时flutter_bloc报'uthrow' isn't a type错误如何解决
问题根因
该报错和你项目内编写的Bloc配置逻辑、当前安装的Flutter版本无关,是本地Pub全局缓存下的flutter_bloc 8.0.1包源码损坏:源码第103行的Dart关键字throw丢失了首字母t,变成了编译器无法识别的uthrow,直接触发编译错误。由于损坏的是全局存储的第三方包文件,哪怕你完全回退项目代码版本,错误也不会消失。
修复步骤
按顺序执行以下操作即可解决:
- 第一步:修复全局Pub缓存,执行命令重新下载校验所有缓存的第三方包:
dart pub cache repair
- 第二步:进入项目根目录,清理项目本地构建缓存和依赖锁定文件:
flutter clean rm pubspec.lock
- 第三步:重新拉取项目依赖:
flutter pub get
- 第四步:重新执行APK构建命令即可正常编译:
flutter build apk
应急备选方案
如果执行完上述步骤后报错仍然存在,可以直接手动删除损坏的包目录再重拉依赖:
- 定位到报错对应的缓存路径,直接删除整个
flutter_bloc-8.0.1文件夹,路径为~/.pub-cache/hosted/pub.dartlang.org/flutter_bloc-8.0.1/ - 回到项目根目录重新执行
flutter pub get,拉取完整的正确包文件后再构建。
补充说明:你执行flutter doctor时提示的Linux桌面端开发依赖缺失,不会影响Android平台APK的构建流程,不需要额外安装处理。
内容的提问来源于stack exchange,提问作者Dev chimp
相关产品推荐
相关产品推荐

