如何将长描述包装在 Flutter pubspec.yaml 文件中?

How to wrap long descriptions in a Flutter pubspec.yaml file?

我注意到在使用 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 supports 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 文件中使用哪种方法包装长描述是否重要?我一直把它们排成一排。

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

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

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

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.

需要考虑一些差异:

  • 普通标量以各种特殊字符结束,例如 :(当后面跟着白色 space 时)。这应该是显而易见的,因为它形成了一个隐式密钥。
  • 折叠块标量仅在遇到父节点缩进处的内容时结束。您可以轻松地将任何字符写入折叠块标量,甚至 # 否则会开始注释。
  • 一些标量在作为普通标量给出时可能会被解析为非字符串。例如,true 可能是一个布尔值,而 42 可能是一个数字。无论内容如何,​​折叠块标量总是产生字符串。

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

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