Flutter Pub:解析块映射时预期找到一个键。路径:

100

我正在使用JSON文件,并在Pubspec.yaml中注册,但出现错误,当我使用图像并注册它时,同样的错误也发生了。可能是格式有误,但不知道问题出在哪里。这是我遵循的文档

pubspec.yaml的第29行第5列出现错误:在解析块映射时,应该有一个键。 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

enter image description here


1
请在这里查看。 - user8667898
第29行是哪一行? - Günter Zöchbauer
Try http://www.yamllint.com/ - Günter Zöchbauer
3
“uses-material-design”应该与“assets”在垂直方向上对齐。 - Anurag Sharma
16个回答

297

在YAML中,空格的位置很重要。

assets缩进太多了。

flutter_test:
  sdk: flutter

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

4
yamllint.com建议在查找yaml文件中的各种问题时,以下提出的问题可能是一个好建议。 - Günter Zöchbauer

27
由于您的代码缩进问题导致的。 uses-material-design 应该与 assets: 在同一行垂直对齐。
 uses-material-design: true

 assets:
   - images/picture.png

1
缩进很重要,所以请确保两者处于同一级别。左侧空格应该相同。 - RamKr
@Dan 谢谢你的回答。非常完美。 - Sakhawat Hossain

21

第29行第4列出现错误:解析块映射时需要一个键。 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

它工作得很好。


4
可能是因为uses-material-design: true的缩进有误。如果想使用 Material 设计,注释掉它并不是一个好的选择。 - Günter Zöchbauer
我注释了 uses-material-design,然后执行了 Packages get 命令,再将其取消注释以在模拟器上重新运行。一切正常。 - Abhishek Bedi

11
在我的情况下,uses-material-design 的缩进有问题。我在它之前加了1个空格,就好了。

7

去掉注释后,默认生成的pubspec.yaml内容如下:

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

但这是无效的。它不能工作。应该是:

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

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


4

资产应该与 uses-material-design 在同一行上:

  uses-material-design: true
  assets:
    - images/myimage.jpg

pubspec.yaml的缩进规则

  • uses-material-design = 2个空格

  • assets = 2个空格

  • -images/ = 4个空格

  • fonts: = 2个空格

    • -family: = 4个空格

    • fonts: = 6个空格

    • -asset: = 8个空格


4

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

请确保您的代码按照键和值的垂直方向在同一行上。

或者

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

https://imgur.com/gallery/ngoXwUe


2
如果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,
        ),

2

这是因为在YAML中,空格是有意义的。uses-material-design应该与assets在同一行垂直排列:

正确的写法应该是:

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

如果您仍然遇到与资产相同的行号错误,请尝试运行flutter cleanflutter pub get命令。

1

你必须小心yml文件中的空格


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