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

Posted

技术标签:

【中文标题】Flutter Pub:解析块映射时需要一个键。小路:【英文标题】:Flutter Pub: Expected a key while parsing a block mapping. path: 【发布时间】:2018-10-14 18:06:54 【问题描述】:

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

pubspec.yaml 第 29 行第 5 列出错:解析块映射时需要一个键资产: ^

这是我的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

【问题讨论】:

看看here 第 29 行是哪一行? 试试yamllint.com uses-material-design 应与assets 垂直对齐 【参考方案1】:

pubspec.yaml 中取消注释 assetsimage link sample 后遇到同样的问题。

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

之后,问题就解决了。

【讨论】:

【参考方案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,
        ),

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

颤振:使用材料设计:真实资产:-资产/dhaka.jpg**

确保在取消注释该行时请检查缩进。 如果缩进错误,就会出错。 流淌着这个形象。 编码快乐!!!

【讨论】:

【参考方案5】:

在我的例子中,uses-material-design 缩进被破坏了。我在它前面多放了 1(一)个空间,效果很好。

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

移除 cmets,原始,默认生成的 pubspec.yaml 看起来像这样

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

但它是无效的。它不起作用。应该是:

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

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

【讨论】:

【参考方案8】:

正如@Baftek 提到的那样,只需在 uses-material-design:true 之前缩进,然后按Ctrl+Alt+l(Intellij 或 android Studio)重新格式化文件。

【讨论】:

【参考方案9】:

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

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

或者

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

https://imgur.com/gallery/ngoXwUe

【讨论】:

【参考方案10】:

这是因为你的代码有缩进。uses-material-design 应该与assets: 垂直位于同一行。

 uses-material-design: true

 assets:
   - images/picture.png

【讨论】:

缩进很重要,因此请确保两者处于同一水平。左边的空间应该是一样的。 @Dan 感谢您的回答。完美的答案。【参考方案11】:

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

【讨论】:

【参考方案12】:

在我的情况下,图像太大而无法加载,减少了图像的尺寸。

【讨论】:

您可能需要添加更多详细信息,以帮助未来的人阅读您的答案。【参考方案13】:

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

颤振:使用材料设计:真实资产: - 资产/图像/image.jpg

就我而言,我只是在uses-material-design: true 前面添加了#

试试下面的代码

flutter:   

  # uses-material-design: true 

   assets: 
    - assets/images/image.jpg

它工作正常。

【讨论】:

这可能是因为uses-material-design: true 的缩进错误。如果你想使用材料,评论它不是一个真正的选择。 我评论了uses-material-design,然后做了Packages get,然后取消了相同的评论,以便在模拟器上重新运行。工作正常【参考方案14】:

空格在 YAML 中很重要

assets 缩进太远

flutter_test:
  sdk: flutter

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

【讨论】:

yamllint.com 下面建议的问题可能是跟踪 yaml 文件中各种问题的好建议。

以上是关于Flutter Pub:解析块映射时需要一个键。小路:的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:导航时“小部件树中的多个全局键”

yaml.parser.ParserError:解析块映射时

使用 Getx 小部件-Flutter 运行时显示错误

Azure DevOps YAML 管道错误:解析块映射时未找到预期的密钥

Flutter -- JSON解析

Flutter中有WebView吗? [复制]