首页 > 解决方案 > 如何在 Flutter pubspec.yaml 文件中包装长描述?

问题描述

我注意到在使用Pubspec Assist插件时,它会description在更新依赖项时换行。

description: Have you been turned into a newt? Would you like to be? This
  package can help. It has all of the newt-transmogrification functionality you
  have been looking for.

在研究这种包装时,我发现yaml 支持 wrapping,但指示使用>(或|用于保留换行符,这可能不推荐用于 Flutter 应用程序?)。

dart.dev上的pubspec页面显示了一个使用 的示例,但它自己的描述没有提及任何关于长描述或包装的内容。>-

description: >-
  Have you been turned into a newt? Would you like to be?
  This package can help. It has all of the
  newt-transmogrification functionality you have been looking
  for.

在 Flutter 项目中,比如说从应用商店的角度来看,使用哪种方法来包装pubspec.yaml文件中的长描述是否重要?我一直把它们排成一排。

标签: flutterdartyamlword-wrappubspec

解决方案


包装是 YAML 语法功能。Flutter 将语义应用于 YAML 文件的解析内容。

这意味着 Flutter 如何表示 YAML 标量并不重要,只要结果(由您使用的 YAML 语法定义)产生 Flutter 的有效值即可。

对于一些标量,YAML 使用换行:单行换行转换为空格,而空行转换为换行。普通标量和折叠块标量都会发生这种情况:

droggeljug: This is a plain scalar.
  It spans multiple lines but when parsed, contains a single line.

baked_beans: >-
  This is a folded block scalar.
  It also spans multiple lines.

  The previous empty line yields a line break in the parsed value.

有一些差异需要考虑:

  • 普通标量以各种特殊字符结尾,例如:(后跟空格时)。这应该很明显,因为它形成了一个隐式密钥。
  • 折叠块标量仅在遇到父节点缩进处的内容时才结束。您可以将任何字符保存到折叠块标量中,即使#它会开始注释。
  • 当以纯标量给出时,某些标量可能会被解析为非字符串。例如,true可能是布尔值,42也可能是数字。无论内容如何,​​折叠块标量总是产生字符串。

除此之外,还有单引号和双引号标量,以及文字块标量(以|代替开头>)。文字块标量按原样解析换行符。双引号标量解析转义序列。单引号标量在遇到第二个之前不会结束'。所有这些标量类型都可以是多行的,并且除了文字块标量之外的所有标量都进行行折叠。您可以选择其中任何一个来编码您的字符串值。

至于你应该使用哪个问题,我想说折叠块标量>-是完成这项工作的正确工具:你可以编写任何东西而不必担心 YAML 特殊字符、转义序列等。


推荐阅读