Flutter Pub:解析块映射时需要一个键。小路:

Flutter Pub: Expected a key while parsing a block mapping. path:

我正在使用 JSON 文件并在 Pubspec.ymal 中注册但显示错误,而且当我使用图像并注册它时,也会发生相同的错误。可能里面格式有误,但是不知道是什么问题is.this是我跟的doc

Error on line 29, column 5 of pubspec.yaml: Expected a key while parsing a block mapping. assets: ^

这是我的 pubspec.yaml 文件

name: jsondata description: A new Flutter application.

  dependencies:  

  flutter:

  sdk: flutter

  cupertino_icons: ^0.1.0

  dev_dependencies:   

 flutter_test:

      sdk: flutter

    flutter:

    uses-material-design: true

      assets:

       - loadjson/person.json

空格在 YAML 中很重要

assets 缩进太远

flutter_test:
  sdk: flutter

flutter:
  uses-material-design: true
  assets:
    - loadjson/person.json

Error on line 29, column 4: Expected a key while parsing a block mapping. assets:

flutter: uses-material-design: true assets: - assets/images/image.jpg

在我的例子中,我只是在 uses-material-design: true

前面添加了 #

试试下面的代码

flutter:   

  # uses-material-design: true 

   assets: 
    - assets/images/image.jpg

它工作正常。

在我的案例中,图像太大而无法加载,减小图像尺寸有效。

在我的例子中,uses-material-design 缩进被破坏了。我在它前面放了 1(一)个 space,它工作正常。

请确保我们没有不需要的空格,因为yaml 结构敏感地考虑了空格。请参阅文档以获取更多信息,如下所示 link,
https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html

这是因为你的 code.The uses-material-design 的缩进应该和 assets:.

垂直在同一行
 uses-material-design: true

 assets:
   - images/picture.png

空格在 .yaml 文件中非常重要。

只需确保您的代码根据键和值位于同一行(垂直)。

如果您仍然感到困惑,请观看这​​个简单的视频。帮你轻松解决问题。

https://imgur.com/gallery/ngoXwUe

@Baftek 所述,只需在 uses-material-design:true 之前缩进,然后按 Ctrl+Alt+l(Intellij 或 Android Studio) 重新格式化文件。

删除评论,原始,默认生成pubspec.yaml看起来像这样

flutter:
  uses-material-design: true
   assets:
    - images/abc.jpg

但这不成立。它不起作用。应该是:

flutter:
  uses-material-design: true
  assets:
    - images/abc.jpg

重要提示:空格在 YAML 中很重要

问题与缩进间距有关,请检查您的间距,它应该可以正常工作
字体: - 系列:CM Sans Serif 字体: - 资产:assets/fonts/cm_sans_serif_2012.ttf

**第 46 行第 4 列错误:解析块映射时需要一个键。资产:

flutter: uses-material-design: 真实资产: - assets/dhaka.jpg**

确保取消注释该行时请检查缩进。 如果缩进错误,就会出错。 流动此图像。 编码愉快!!!

yml文件中的space要小心

如果images文件夹在lib文件夹旁边,则需要./,因为它与pubspec.yaml不在同一层级,那么,在pubspec.yaml取消注释:

assets:
- ./images/   //Watch for spaces and indentation!!

现在您可以使用它们了:

Image.asset(
          '../images/nature.png',
          width: 600,
          height: 240,
          fit: BoxFit.cover,
        ),

pubspec.yaml.

中取消注释 assetsimage link sample 后出现同样的问题

如果您遇到 assets 的问题,就像我一样。确保它以相同的列开始(以与预定义 属性 相同的缩进开始,如 uses-material-design)。在我取消注释后,他们的位置不同了。

之后问题就解决了

资产应与 uses-material-design:

在同一行
  uses-material-design: true
  assets:
    - images/myimage.jpg

pubspec.yaml

的缩进规则
  • uses-material-design = 2 个空格

  • 资产 = 2 个空格

  • -图片/ = 4 个空格

  • 字体:= 2 个空格

    • -family:=4个空格

    • 字体:= 6 个空格

    • -资产:= 8 个空格