如何解决Flutter pubspec.yaml依赖项仅能有一个源的报错问题
Error on line 31, column 5 of pubspec.yaml: A dependency may only have one source.
错误原因
这个报错的核心诱因是pubspec.yaml的依赖区块缩进不符合YAML格式规范,解析器把sdk: flutter和后续所有第三方依赖都识别为flutter这个依赖的多个源,违反了单个依赖只能指定一个源的规则。
排查&解决步骤
- 打开项目根目录的
pubspec.yaml文件,定位到dependencies区块 - 修正依赖的层级缩进,YAML对缩进要求非常严格,统一用2个空格表示子层级,正确格式参考如下:
dependencies: # flutter依赖单独作为一项,sdk是它的子属性,需要多缩进一层 flutter: sdk: flutter # 所有第三方依赖和flutter项平级,不要嵌套在flutter的子层级下 firebase_core: "0.4.4" firebase_analytics: "5.0.11" firebase_auth: "0.15.4" firebase_storage: "3.1.1" cloud_firestore: "0.13.2+1" provider: "4.0.4" image_picker: "0.6.3+4" timeago: "2.0.26" flutter_spinkit: "4.1.2" cupertino_icons: ^1.0.2
- 保存修改后的文件,重新执行
flutter pub get即可正常拉取依赖
同类问题规避建议
- 编写pubspec.yaml时不要混用Tab和空格作为缩进,统一使用2个空格
- 单个依赖只能指定一个来源:要么写版本号,要么指定git源、path源,不能同时指定多个
- 注意区分
dependencies和dev_dependencies两个区块,不要混写依赖
内容的提问来源于stack exchange,提问作者Pranali Manhor Patil
相关产品推荐
相关产品推荐

