正确的 flutter/dart 格式

Proper flutter/dart formatting

我正在研究一些 flutter 代码。该代码将右大括号堆叠在同一行上。此外,当我 运行 在 VSCode 中“格式化文档”时,它也会将大括号堆叠在一行上。

像这样(见最后一行)...

return Container(
    width: 200,
    child: CupertinoTextField(
        maxLength: 10,
        textCapitalization: TextCapitalization.characters,
        focusNode: focusNode,
        decoration: BoxDecoration(
            border: Border.all(color: Colors.white.withOpacity(0))),
        style: accentTextStyle,
        placeholder: "NAME",
        textAlign: TextAlign.center,
        keyboardAppearance: Brightness.dark,
        controller: _textController,
        onChanged: (s) {
          navigation.update();
          if (s == '') {
            program.name = 'UNNAMED${navigation.programsCounter}';
            return;
          }
          program.name = s.toUpperCase();
        }));

但是在 flutter 文档和示例代码中,所有示例都使用以下格式(大括号在不同的行上)。

return Container(
  width: 200,
  child: CupertinoTextField(
    maxLength: 10,
    textCapitalization: TextCapitalization.characters,
    focusNode: focusNode,
    decoration: BoxDecoration(
        border: Border.all(color: Colors.white.withOpacity(0))),
    style: accentTextStyle,
    placeholder: "NAME",
    textAlign: TextAlign.center,
    keyboardAppearance: Brightness.dark,
    controller: _textController,
    onChanged: (s) {
      navigation.update();
      if (s == '') {
        program.name = 'UNNAMED${navigation.programsCounter}';
        return;
      }
      program.name = s.toUpperCase();
    }
  )
);

哪种格式合适?另外,“格式化文档”是否使用 dart 扩展来获得正确的格式?

您还可以通过在大括号之间添加 commas 并点击缩进按钮来获得相同的缩进:

  • VS 代码:alt + shift + f
  • Android工作室:ctrl + alt + l

对我来说非常好:)

添加逗号,例如:

onChanged: (s) {
          navigation.update();
          if (s == '') {
            program.name = 'UNNAMED${navigation.programsCounter}';
            return;
          }
          program.name = s.toUpperCase();
        },),);

缩进后:

    onChanged: (s) {
      navigation.update();
      if (s == '') {
        program.name = 'UNNAMED${navigation.programsCounter}';
        return;
      }
      program.name = s.toUpperCase();
    },
  ),
);

您可以在大括号末尾使用逗号(,)。然后 'Format Document' 将分隔每个大括号的行。试试这个:

return Container(
 width: 200,
 child: CupertinoTextField(
    maxLength: 10,
    textCapitalization: TextCapitalization.characters,
    focusNode: focusNode,
    decoration: BoxDecoration(
        border: Border.all(color: Colors.white.withOpacity(0))),
    style: accentTextStyle,
    placeholder: "NAME",
    textAlign: TextAlign.center,
    keyboardAppearance: Brightness.dark,
    controller: _textController,
    onChanged: (s) {
      navigation.update();
      if (s == '') {
        program.name = 'UNNAMED${navigation.programsCounter}';
        return;
      }
      program.name = s.toUpperCase();
    },
   ),
  );

编辑:

好的,您正在寻找合适的方法。如 official document 中所述,您应该使用尾随逗号。

To get good automatic formatting, we recommend you adopt the optional trailing commas.