You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改pubspec.yaml后flutter pub get报版本约束需为字符串错误

问题原因

报错和fluttertoast依赖本身无关,是pubspec.yaml的缩进层级完全错乱导致的。YAML是严格依赖缩进判断节点层级的配置格式,你错误地将生产依赖、开发依赖、Flutter项目配置全部嵌套到了environment节点下的flutter子节点里,导致Pub解析工具把这些配置项识别成了Flutter SDK的版本约束,最终抛出“版本约束必须为字符串”的解析错误。
你当前的配置实际被解析为如下错误结构:

environment:
  sdk: '>=2.18.0-170.0.dev <3.0.0'
  flutter:
    sdk: flutter
    # 以下所有内容都被错误归到flutter.sdk的同级,属于完全错误的嵌套
    cupertino_icons: ^1.0.2
    fluttertoast: ^8.0.9
    dev_dependencies:
      flutter_test:
        sdk: flutter
        flutter_lints: ^2.0.0 # 还被错误嵌套到了flutter_test节点下
        flutter:
          uses-material-design: true # 被错误嵌套了三层

哪怕你删掉fluttertoast的行,错乱的缩进结构没有变化,所以报错会一直存在。

修复方案
  • 调整所有节点的缩进,将dependencies、dev_dependencies、flutter三个块全部设为顶级节点,和environment节点左对齐,不要嵌套到其他节点下。
  • 补全你误删的name、dependencies顶级字段(这两个是flutter create生成项目时默认存在的,你编辑的时候误删/缩错位置了)。

修正后的完整可用配置如下:

name: 你的项目名称 # 替换成你自己的项目名,和项目文件夹名保持一致即可
description: A new Flutter project.

publish_to: 'none'
version: 1.0.0+1

environment:
  sdk: '>=2.18.0-170.0.dev <3.0.0'

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.2
  fluttertoast: ^8.0.9

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^2.0.0

flutter:
  uses-material-design: true
  • 替换保存文件后,重新执行flutter pub get即可正常完成依赖拉取。

额外提示:你当前使用的是master渠道的Flutter预发布版本,本身存在未修复的不稳定问题,如果后续频繁遇到工具链、依赖解析类的异常,可以切换到stable渠道使用正式发布版本。

内容的提问来源于stack exchange,提问作者Aggerio6969

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 01:09:24