Visual Studio Code Flutter 格式不适用于我的缩进空间值

Posted

技术标签:

【中文标题】Visual Studio Code Flutter 格式不适用于我的缩进空间值【英文标题】:Visual Studio Code Flutter Format is Not Working with My Indent Space Value 【发布时间】:2020-03-30 20:12:57 【问题描述】:

我浪费了一整天,我不明白发生了什么。我正在使用 Visual Studio Code 1.40.2,我正在学习 Flutter 3.60。有时,由于缩进空间,Flutter 代码变得不可读。我只想创建更多空间(缩进空间),但是当我使用格式选项时,选项卡大小再次变为 2。我查看了太多网站,包括 ***,不幸的是我没有找到解决方案。它变得烦人。这是我的配置文件:(感谢帮助)


"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
"editor.fontSize": 18,
"editor.fontFamily": "Consolas, 'Courier New', monospace, ",
"dart.openDevTools": "flutter",
"workbench.colorTheme": "Night Owl (No Italics)",
"workbench.iconTheme": "material-icon-theme",
"editor.fastScrollSensitivity": 8,
"editor.tabSize": 8,
"editor.insertSpaces": true,
"editor.wordWrap": "on",
"editor.smoothScrolling": true,
"editor.cursorBlinking": "expand",
"editor.cursorSmoothCaretAnimation": true,
"editor.fontWeight": "400",
"outline.showFields": false,

"[dart]": 
    "editor.tabSize": 6,
    "editor.insertSpaces": true,
    "editor.detectIndentation": false,
,

我将 editor.insertSpaces 更改为 false 和 true,但没有任何变化。 editor.detectIndentation true 或 false 不起作用。

我添加了这个块但是没有用。

"[颤动]": “editor.tabSize”:6, “editor.insertSpaces”:是的, “editor.detectIndentation”:假, ,

这是我的简单代码:

import 'package:flutter/material.dart';

class GridListe extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return GridView.count(
        crossAxisCount: 3,
        primary: false,
        padding: EdgeInsets.all(10),
        crossAxisSpacing: 20,
        mainAxisSpacing: 40,
        children: <Widget>[
            Container(
                alignment: Alignment.center,
                color: Colors.teal,
                child: Text(
                "Salam",
                textAlign: TextAlign.center,
                ),
            ),
        ],
    );
  

当我使用格式代码 (Shift + alt + p) 代码缩进空间或制表符大小变成 2 时,它会让我发疯。

import 'package:flutter/material.dart';

class GridListe extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return GridView.count(
      crossAxisCount: 3,
      primary: false,
      padding: EdgeInsets.all(10),
      crossAxisSpacing: 20,
      mainAxisSpacing: 40,
      children: <Widget>[
        Container(
          alignment: Alignment.center,
          color: Colors.teal,
          child: Text(
            "Salam",
            textAlign: TextAlign.center,
          ),
        ),
      ],
    );
  

【问题讨论】:

dartfmt 总是打算使用 2 个空格 - 你无法控制。 有时我看教程,当他们使用 android Studio 时,他们有更多的缩进空间......我认为问题在于 VSC 设置。 @BurakİbrahimÜnal 不幸的是,这不仅仅是设置 - 请参阅下面的答案。 Android Studio/IntelliJ 确实有更多选择,因为它们自己解析 Dart 代码并从 IDE 框架中获得很多功能 - VS Code 并非如此,因此我们只有 SDK 提供的格式。 在设置中搜索formatOnSave并启用 【参考方案1】:

VS Code 的 Dart 扩展使用来自 Dart SDK (dart_style) 的格式化程序,它不支持自定义缩进选项(按设计),因此它将始终使用 2 个空格。

如果您希望手动格式化,可以禁用内置格式化程序,并且其他 VS Code 扩展也可以为 Dart 提供格式化程序 - 尽管据我所知(还)没有创建(虽然我已经提供了帮助 in this issue 如果有人有兴趣创建一个 VS Code 扩展来执行此操作)。

【讨论】:

【参考方案2】:

在你的 settings.json 文件中添加这个

"[dart]": 
   "editor.defaultFormatter": "Dart-Code.dart-code",
   "editor.formatOnSave": true
,

【讨论】:

我也输入了这行...没有任何改变。我已经在上面写了。不幸的是 dart sdk 不支持更改缩进空间。 在此解决方案中删除 "[dart]": 对我有用。【参考方案3】:

只需在您的ProjectDir/ProjectName/.vscode/settings.json 中添加以下代码

   
        "editor.defaultFormatter": "Dart-Code.dart-code",
        "editor.formatOnSave": true
 

【讨论】:

对我来说非常棒的工作【参考方案4】:
    打开设置 (json) 找到 [dart] 并添加“editor.tabSize”:4

【讨论】:

以上是关于Visual Studio Code Flutter 格式不适用于我的缩进空间值的主要内容,如果未能解决你的问题,请参考以下文章