如何在VSCode中格式化Dart文件时更改Dart行长度?

95

我正在使用VS Code进行Flutter开发,其中一个问题是代码格式化(样式),它不像在Android Studio中那样可自定义。我的问题是每次VS Code保存Dart文件时,它会将我的行分得非常短,就像下面这样:

var tuple =
       settings.arguments as Tuple3<String, int, Field>;

显然这就是我想要的:

var tuple = settings.arguments as Tuple3<String, int, Field>;

我该如何解决这个问题?

8个回答

159

您需要在settings.json文件中更改2个设置:

"dart.lineLength": 150,
"[dart]": {
    "editor.rulers": [
        150
    ],
}

如果您不更改第二个选项,您仍将看到垂直的“标尺”在80个字符宽度处。


2
我已经将这两个添加到我的设置 json 文件中,但仍然不起作用……很奇怪,以前它可以工作,但重新安装 Dart 后,无论如何都无法工作。 - Chris
2
“dart”设置前缺少引号。这个解决方案对我有效。在settings.json文件中也要检查重复项。 - Chris
1
@Chris 你需要一对花括号 { } 来闭合所有内容。 - chemamolins
1
但是如何完全摆脱标尺呢?我想要lineLength限制,只是不想要标尺。 - Ansh Saini
2
在vscode中有用户和工作区设置,请确保您都设置了,工作区设置会覆盖用户设置。 - fredtma
显示剩余2条评论

71

看起来你的代码达到了单行长度限制。

默认的最大行长是经典的80个字符,所以你需要在代码中加入很多空格才能达到该限制,这时格式化程序会自动折断行。如果这是一个问题 - 考虑拆分你的代码。

这是正确格式化的:

class MyApp {
  void insideclass() {
    if (true) {
      if (true) {
        if (true) {
          if (true) {
            if (true) {
              if (true) {
                if (true) {
                  if (true) {
                    var tuple =
                        settings.arguments as Tuple3<String, int, Field>;
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

class MyApp2 {
  void insideclass() {
    if (true) {
      if (true) {
        if (true) {
          if (true) {
            if (true) {
              if (true) {
                if (true) {
                  var tuple = settings.arguments as Tuple3<String, int, Field>;
                }
              }
            }
          }
        }
      }
    }
  }
}

然而,如果80对您来说实际上太小了,您也可以在VSCode中更改扩展程序的设置。

VSCode Dart&Flutter extension settings - line length


42
要在VSCode中更改行长度,打开settings.json文件并添加以下行
"dart.lineLength": 120,
"[dart]": {
    "editor.rulers": [
        120
    ],
}

附注:如果您希望更改在VSCode中的单个项目的Dart行长度,请创建一个.vscode/settings.json文件,并将上述配置添加到该文件中。

要在Android Studio中更改Dart行长度,请执行以下操作:

设置 > 编辑器 > 代码样式 > Dart并更改行长度

enter image description here


能否为单个文件自定义此功能? - Marwin Lebensky
@MarwinLebensky 我不这么认为。 - alireza easazade

4

针对 Android Studio

Android Studio -> Preferences -> Editor -> Code Style -> Dart -> Line length

3

你的settings.json应该像这样,

{

 "dart.lineLength": 150,
    "[dart]": {
        "editor.defaultFormatter": "Dart-Code.dart-code",
        "editor.formatOnSave": true,
        "editor.formatOnType": true,
        "editor.tabSize": 2,
        "editor.rulers": [
            220
        ],
        "editor.detectIndentation": false,
        "editor.selectionHighlight": false,
        "editor.suggest.snippetsPreventQuickSuggestions": false,
        "editor.suggestSelection": "first",
        "editor.tabCompletion": "onlySnippets",
        "editor.wordBasedSuggestions": false
    },}

在保存设置后,您需要通过以下方式重新加载项目或重新格式化:

  1. 右键单击

  2. 选择格式化


3
在VSCode的设置中: photo 在Android Studio中: photo

1
欢迎来到SO!虽然我们感谢您的回答,但如果它能在其他答案的基础上提供额外的价值将更好。 在这种情况下,您的答案没有提供额外的价值,因为另一个用户已经发布了该解决方案。 如果以前的答案对您有帮助,您应该在获得足够的声望后投票支持它 - lepsch

1
值得注意的是,还有一个用于强制执行小于80个字符的代码规则:lines_longer_than_80_chars。
正如其他人所说,您必须在IDE设置中自定义此值,因为没有其他方法可以强制执行另一个值。但是,如果您想强制执行小于80个字符,可以使用上述代码规则。
我本来想允许超过80个字符,但由于这个代码规则文档中的有趣陈述,我不会改变它:
“如果您真的发现自己想要超过80个字符的行,我们的经验是您的代码可能太冗长,可以更加紧凑一些。”

-2

这是一行代码,用于指示您应该在哪里剪切代码。只需更改setting.json中的"editor.rulers: [ 150 ]"即可。您可以在设置中找到它,例如搜索字体连字,然后单击settings文本中的编辑,但当然有许多其他方法可以找到它,然后它就会消失。看着真的很烦人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接