Flutter安装Freezed报错:freezed依赖自身导致版本求解失败
问题根因
报错的核心原因是你当前Flutter项目在pubspec.yaml中声明的项目名就是freezed,和你要引入的第三方包Freezed完全同名。Dart的pub包管理工具会默认将同名依赖识别为项目自身,因此触发「包不能将自身列为依赖」的规则,直接导致版本求解失败,和你当前使用的系统版本、Flutter/Dart版本没有关系,也不是Freezed包本身的故障。
你可以直接打开项目根目录下的pubspec.yaml,查看最顶部的非注释配置项,大概率能看到如下配置:
name: freezed
修复步骤
- 修改
pubspec.yaml顶部的name字段值,改成和Freezed不重名的自定义名称,比如freezed_practice、my_todo_app这类,命名需要符合Dart包规范:全小写、以下划线分隔单词、不包含特殊字符和保留字。 - 如果你之前手动在
dependencies或dev_dependencies块中添加过freezed: any的配置,先把这行错误配置删除。 - 保存配置后执行
flutter clean清理历史构建缓存,再重新执行依赖安装命令:
flutter pub add freezed_annotation flutter pub add --dev build_runner flutter pub add --dev freezed
Freezed正常运行需要三个配套依赖:生产依赖
freezed_annotation、开发依赖build_runner(用于代码生成)、开发依赖freezed(核心生成逻辑),不要漏装否则后续代码生成会报错。
通用排查提示
后续引入任何第三方Flutter/Dart包时,如果出现同类A package may not list itself as a dependency报错,第一时间检查自身项目名是否和待引入的包重名,这是pub依赖管理的通用校验规则,和具体引入的包无关。
内容的提问来源于stack exchange,提问作者Constant Dupuis
相关产品推荐
相关产品推荐

