Flutter Android Studio 使大括号换行

标签 flutter android-studio dart syntax curly-braces

我一直在尝试在 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 开发人员的生活——您可以获得更多可重用的代码、更一致的代码、更容易阅读和为彼此的代码做出贡献等等。但这是以牺牲个人偏好为代价的。

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

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

关于Flutter Android Studio 使大括号换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67837931/

相关文章:

android - 如何检测是否在 Flutter 中打开了另一个应用程序?

json - Flutter 'List<dynamic>' 不是类型 'Map<String, dynamic>' 的子类型

android - IllegalAccessException : can not access a member of class com. android.build.gradle.tasks.ManifestProcessorTask

java - 错误 : Failed to resolve: com. google.firebase :firebase-core:18. 1.0 在项目结构对话框中显示受影响的模块:app

dart - 将bwu-datagrid的高度设置为动态

firebase - Flutter应用程式停留在启动画面上,无法移至登入页面或首页

dart - 如何在 flutter 中为下拉菜单设置初始值?

flutter - 无法在 listView.builder 中显示原生广告?

java - Android DDMS 为空

dart - 在 firebase_auth 插件版本 0.2.0 中访问 c​​urrentUser 数据