Flutter使用graphql_flutter+gql构建iOS应用出现Response参数不匹配错误
问题原因
该报错由gql系列依赖版本不兼容导致:你手动指定的gql: ^0.13.0会自动引入更高版本的gql_exec依赖,该版本的Response构造函数新增了必填命名参数response,但你使用的graphql_flutter: ^5.0.0配套的graphql、gql_link、gql_http_link等依赖均为旧版本,调用Response构造时未传入该必填参数,最终触发编译错误。
解决方案
- 方案1:移除单独声明的gql依赖
若无特殊需求,你不需要在pubspec.yaml中手动指定gql版本,仅保留graphql_flutter: ^5.0.0即可,它会自动拉取匹配版本的gql系列依赖,不会出现版本冲突。修改完成后执行以下命令清理缓存并拉取依赖:
flutter clean flutter pub get
- 方案2:锁定兼容的gql版本
如果你的项目确实需要单独声明gql依赖,可将gql版本降级到和graphql_flutter 5.0.0适配的版本,将pubspec.yaml中的gql配置修改为:
gql: ^0.12.4
修改完成后同样执行flutter clean与flutter pub get命令重新拉取依赖即可。
- 方案3:升级graphql_flutter到最新稳定版
你也可以直接将graphql_flutter升级到最新的稳定版本,新版已经适配了高版本gql的Response构造函数参数,不会触发该报错。
如果修改配置后仍然存在报错,删除项目根目录下的pubspec.lock文件后再重新执行依赖拉取命令即可。
内容的提问来源于stack exchange,提问作者Just a Flutter dev
相关产品推荐
相关产品推荐

