Flutter pubspec.yaml配置fork分支依赖报‘依赖仅能有一个来源’错误
报错核心原因
两种配置均触发"A dependency may only have one source"提示,本质是配置层级不符合pub的git依赖解析规则,被校验逻辑判定为给同一个包配置了多个来源:
- 第一种写法采用了git+url的嵌套结构,但将本属于git配置项的
ref字段放到了git块的同级位置,解析器会误将独立在外的ref识别为额外的来源配置,触发拦截。 - 第二种写法采用了url简写形式,部分新版本pub对这类跨层级配置的校验更严格,会判定为来源配置不规范,触发同类报错。
正确配置写法
优先使用兼容性最好的全嵌套结构,将所有git相关参数归入git配置块内部,不要在外层冗余其他和依赖来源相关的字段:
dependencies: geoflutterfire: git: url: https://github.com/[myUsername]/GeoFlutterFire ref: 3x_null_safety
特别提醒:不要在该依赖的配置下额外写
version字段,pub会自动读取git仓库对应分支内的pubspec.yaml版本信息,手动写version会被判定为同时配置了pub官方源+git源,直接触发同类型报错。
如果偏好url简写形式,需保证git和ref字段缩进完全同级,且不新增其他来源类配置,正确示例为:
dependencies: geoflutterfire: git: https://github.com/[myUsername]/GeoFlutterFire.git ref: 3x_null_safety
常见排查点
- YAML缩进需统一使用2空格格式,禁止混用tab键和空格,避免解析器识别错配置层级
- 配置完成后可先执行
flutter pub get,如果仍有报错可通过dart pub cache repair清理本地缓存后重试
内容的提问来源于stack exchange,提问作者Lara
相关产品推荐
相关产品推荐

