为什么 VSCode 总是用奇怪的缩进弄乱我的 Flutter 代码?

Why does VSCode constantly mess up my Flutter code with weird identation?

当我在 VSCode 中保存我的 Dart 文件时,它经常以奇怪的方式弄乱它们的标识,现在,我已经记得它在用 JS 编码时创建新行,但至少那是不明显的。但在这儿?它看起来是这样的:

        body: screens[
            currentIndex]

还有这个:

class RemotePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) => Scaffold(
          body: Column(children: [
        Row(children: [
          PopupMenuButton(
              itemBuilder: (BuildContext context) => [
                    PopupMenuItem(
                        child: Row(children: [
                      Iconify(AkarIcons.youtube_fill),
                      Text("YouTube")
                    ]))
                  ])
        ])
      ]));
}

谁能告诉我为什么会这样,我该如何解决?

回答

这是尾随逗号和 80 列大小。 在 Dart 中,如果你在末尾添加一个逗号,你不会有问题,事实上,在 Flutter 中,建议你这样做来解决这些缩进问题。 您的代码将如何:

Widget build(BuildContext context) => Scaffold(
        body: Column(
          children: [
            Row(
              children: [
                PopupMenuButton(
                  itemBuilder: (context) => [
                    PopupMenuItem(
                      child: Row(
                        children: [
                          Iconify(AkarIcons.youtube_fill),
                          Text("YouTube"),
                        ],
                      ),
                    ),
                  ],
                ),
              ],
            ),
          ],
        ),
      );

关于 80 列大小,它在 VSCode 的 Dart 设置中,但建议这样做,因为所有 Flutter/Dart 项目都使用它。

建议

也许尝试激活 Analizer linter require_trailing_commas