在运行packages get命令时,Flutter出现“Mapping values are not allowed here”错误。

3
我相信这是YAML语法错误,但我找不到它在哪里。
最近我在项目中添加了一个新的字体(Manrope),现在我的Flutter packages get出错了。在添加字体之前,它可以正常工作。
以下是pubspec.yaml的相关部分:
flutter:

  uses-material-design: true

  assets:
  - assets/

  fonts:
  - family: Hanken Grotesk
    fonts:
    - asset: fonts/HankenGrotesk-Regular.otf
    - asset: fonts/HankenGrotesk-Bold.otf
      weight: 700
    - asset: fonts/HankenGrotesk-SemiBold.otf
      weight: 600
    - asset: fonts/HankenGrotesk-Medium.otf
      weight: 500
    - asset: fonts/HankenGrotesk-Light.otf
      weight: 300
    - asset: fonts/HankenGrotesk-ExtraLight.otf
      weight: 200

  - family: Manrope
    fonts:
    - asset: fonts/manrope-regular.otf
    - asset: fonts/manrope-bold.otf
      weight: 700
    - asset: fonts/manrope-semibold.otf
      weight: 600
    - asset: fonts/manrope-medium.otf
      weight: 500

以下是我收到的错误信息:

Error on line 65, column 12 of pubspec.yaml: Mapping values are not allowed here. Did you miss a colon earlier?
      fonts:
           ^

pub get failed (65)
3个回答

3
你对相关部分的展示使得很难确定第65行,因为示例并不是很长。
但我相当确定错误不在呈现的部分。因为错误是由第12列中的值指示器(:)引起的,在你的样本中,fonts后面的指示器位于第10个位置。
所以搜索一个缩进了六个位置而不是你包含的示例中的四个位置的fonts行,那里就有错误,可能是由于过度缩进造成的。
(通常最好包含有问题文件的完整文本,如果你无法缩小问题源)

实际上,在编辑之间我没有保存文档,因此Flutter包获取一直指的不是我的pubspec.yaml文件的当前版本。非常愚蠢的错误,所以我会将您的答案标记为正确,因为它是相当好的建议。 - leodriesch

0
一个巧妙的技巧是JSON是YAML的子集,所以如果你在弄清楚YAML缩进或语法方面遇到麻烦,只需将其替换为JSON,就可以混合使用。

0

是的,你说得对。这是Yaml语法的问题。在Yaml中,代码以对象的形式编写,就像JSON一样,因此我们必须小心代码的缩进,每个对象都要向后缩进2个空格。

输入图像描述


1
最好将正确的代码作为文本放在这里,而不是使用截图。 - Adam Millerchip
没错!但我想要向你展示的是图片中突出显示的缩进层次结构,无法通过代码来显示... - Gulfam Raza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接