Android Studio Dart/Flutter防止格式化程序将方法调用压缩到一行

ffvjumwh  于 2022-11-16  发布在  Android
关注(0)|答案(2)|浏览(212)

我的格式化程序一直在做这样的事情。2当我试图把方法调用放在单独的行中时。3例如我有这样一段代码:

main() {
  SomeObject()
    .someMethod()
    .someMethodWithArgument('someArgument')
    .someMethodWithArgument('someOtherArgument');
}

点击快速格式后,我得到了类似这样的结果:

main() {
  SomeObject().someMethod().someMethodWithArgument('someArgument')
    .someMethodWithArgument('someOtherArgument');
}

它让我抓狂,在我看来它完全不可读。我在Android Studio首选项中摆弄了格式设置,但我找不到任何可以修复这个特定格式问题的东西。

ergxz8rk

ergxz8rk1#

没有办法通过设计来配置dartfmt,但是,您可以通过在每行上添加注解来强制它匹配您的格式:

main() {
  SomeObject() //
    .someMethod() //
    .someMethodWithArgument('someArgument') //
    .someMethodWithArgument('someOtherArgument');
}

这显然不是理想的,也不会与生态系统中的其他Dart代码保持一致,但如果格式让您感到困扰,这是唯一的选择。

t5zmwmid

t5zmwmid2#

为了更好地支持在单独的行上的链接调用,进行了一项更改。它确实涉及到Ben Konyi建议的尾随//,但您不需要在每一行上都这样做。链接中的一个//会将链接分成多行。
所以按照Ben的例子,如果你把它分解,并把一个单一的//作为

main() {
      SomeObject()//
.someMethod().someMethodWithArgument('someArgument').someMethodWithArgument('someOtherArgument');
    }

它将被重新格式化为:

main() {
      SomeObject() //
        .someMethod()
        .someMethodWithArgument('someArgument')
        .someMethodWithArgument('someOtherArgument');
    }

相关问题