Flutter构建时出现.pub-cache中Cloud Firestore库文件重复引用错误求助
解决Cloud Firestore文件重复引用的编译错误
你遇到的这个"A file can't be part of more than one library"错误,大概率是Flutter pub缓存里的Cloud Firestore包出现了文件冗余或者损坏,虽然你已经做了一些清理操作,但可以试试更彻底的方案:
一、彻底清理缓存与冗余文件
- 先执行
flutter clean清空项目的构建缓存 - 手动删除项目根目录下的
.dart_tool文件夹和pubspec.lock文件 - 执行
flutter pub cache clean彻底清理Flutter的pub缓存(比repair更彻底) - 最后重新执行
flutter pub get拉取所有依赖
二、手动删除损坏的Cloud Firestore缓存包
从错误信息能看到,问题出在本地缓存的cloud_firestore-0.16.0包里,直接手动删除这个文件夹:
- 找到路径:
C:/Users/yassin/Downloads/Programming%20files/Flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.16.0 - 删除整个文件夹后,再次执行
flutter pub get让系统重新下载完整的包文件
三、锁定Firebase包的精确版本
你当前用的带^的版本号可能会导致依赖解析出现小问题,试着改成精确版本:
在pubspec.yaml里修改:
firebase_core: 0.7.0 cloud_firestore: 0.16.0
然后执行flutter pub get重新安装依赖
额外优化:你的StreamBuilder相关代码小问题
虽然这不是当前错误的原因,但你的displayLocations()方法有个逻辑问题——return documents;写在了forEach的回调里,不会正确返回结果,改成async/await的写法会更清晰:
Future<List<DocumentSnapshot>> displayLocations() async { final querySnapshot = await _firebaseFirestore.collection('locations').get(); return querySnapshot.docs; }
内容的提问来源于stack exchange,提问作者Yassin Sameh
相关产品推荐
相关产品推荐

