Flutter Android Studio 使大括号在新行开始

Flutter Android Studio make curly braces start on new line

我一直在尝试在 Android Studio 中为 Flutter 设置花括号。我尝试查看项目设置,但 Dart 不提供样式更改。目前,我的代码如下所示:

class Trial extends StatefulWidget {
  const Trial({Key key}) : super(key: key);

  @override
  _TrialState createState() => _TrialState();
}

class _TrialState extends State<Trial> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

但我希望它一直看起来像这样

class Trial extends StatefulWidget 
{
  const Trial({Key key}) : super(key: key);

  @override
  _TrialState createState() => _TrialState();
}

class _TrialState extends State<Trial>
{
  @override
  Widget build(BuildContext context) 
  {
    return Container();
  }
}

如何让自动格式化程序在新行上创建大括号?

Dart 尝试格式化代码本身,以便它对每个开发人员都是一致的,而不仅仅是你。让大家对代码的理解都一样,不会混淆。

代码按照 dart sdk 中的 dartfmt 工具进行格式化。 根据 https://github.com/dart-lang/dart_style/wiki/FAQ 的代码样式文档,它描述了两点:

我不喜欢输出!

首先,这不是问题。但是,是的,有时您可能不喜欢格式化程序的输出。这可能是一个错误,也可能是您不同意的格式化程序的故意风格选择。找出问题的最简单方法是提交问题。

既然格式化程序已经相当成熟,输出更有可能是故意的。如果您仍然对它对您的代码所做的事情不满意,您可以做的最简单的事情就是调整您发送的内容。虽然格式化程序试图使所有代码看起来都很棒,但在某些规则中需要权衡取舍。在这些情况下,它倾向于使更常见的习语看起来更好。

如果您的代码最终看起来很糟糕,那么您的代码可能不走寻常路。通常将一个表达式提升到一个局部变量或取出一个大的 lambda 并使其成为一个命名函数就可以回到快乐的地方。

为什么我配置不了?

根据设计,格式化程序支持极少的可调整设置。如果您查看上面的优先级列表,您会发现可配置性与前两个优先级直接相关,与第三个优先级相差无几(您必须考虑它,但不要应用它)。

这可能令人惊讶,但 dartfmt 的目标并不是自动让您的代码看起来像您喜欢的样子。就是为了让每个人的 Dart 代码看起来都一样。 dartfmt 的主要目标是提高 Dart 生态系统的质量。这也间接地改善了每个 Dart 开发人员的生活——你可以重用更多的代码,更一致的代码,更容易阅读和贡献彼此的代码,等等。但它是以牺牲个人偏好为代价的。

它要求您认同一致的生态系统比任何人的个人格式偏好更有价值的想法。或者,另一种说法是,没有人的个人格式风格比 dartfmt 产生的格式更好,足以弥补不一致的成本,并且不得不争论你的团队的内部风格应该是什么。

如果你不买那个也没关系。这只是意味着 dartfmt 可能不是适合您的工具。