【问题标题】:Flutter Pub: Expected a key while parsing a block mapping. path:Flutter Pub:解析块映射时需要一个键。小路:
【发布时间】: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 垂直对齐

标签: android path mapping flutter dart-pub


【解决方案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 文件中各种问题的好建议。
                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2020-01-24
                      • 2019-02-04
                      • 2019-08-23
                      • 1970-01-01
                      • 2016-11-11
                      • 2020-03-21
                      相关资源
                      最近更新 更多