dart 正确的Flutter/省道格式

3xiyfsfu  于 2023-07-31  发布在  Flutter
关注(0)|答案(3)|浏览(146)

我正在研究一些Flutter代码。代码在同一行上堆叠右大括号。此外,当我在VSCode中运行“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();
        }));

字符串
但在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扩展名来获得正确的格式?

nx7onnlm

nx7onnlm1#

可以在大括号的末尾使用逗号(,)。然后“格式化文档”将分隔每个大括号的行。试试这个:

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中提到的,应该使用尾随逗号。
要获得良好的自动格式设置,我们建议您采用可选的尾随逗号。

dphi5xsq

dphi5xsq2#

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

  • VS编码:alt + shift + f
  • Android Studio: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();
    },
  ),
);

nr9pn0ug

nr9pn0ug3#

我也有同样的问题,@Akif的回答为我做了。确保在结束语的末尾有一个逗号),格式化程序将按预期工作。
如果末尾没有逗号,格式化程序将执行以下操作:

void main() => runApp(MaterialApp(
        home: Scaffold(
            appBar: AppBar(
      title: Text('My First App'),
    ))));

字符串
如果在末尾添加逗号,结果将如下所示:

void main() => runApp(
      MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: Text('My First App'),
          ),
        ),
      ),
    );


因此,我想这是一个很好的做法,总是添加一个逗号,即使只有1个元素用于格式化目的。

相关问题