Цепочка функций дротика/флаттера, каждая в новой строке с автоматическим форматированием

#flutter #dart

Вопрос:

Автоматическое форматирование в Dart создает беспорядок в моем коде, например, это:

 final list = Stream.fromIterable([1, 2, 3]);
list
  .map((a) => a * 2)
  .map((b) => b * 3)
  .reduce((a, b) => a   b);
 

становится этим:

 final list = Stream.fromIterable([1, 2, 3]);
list.map((a) => a * 2).map((b) => b * 3).reduce((a, b) => a   b);
 

Есть ли способ сохранить разрывы строк во время автоматического форматирования в местах, где я использую символ точки для цепочки функций? Под автоматическим форматированием я подразумеваю нажатие CTRL ALT L в Android Studio.

Комментарии:

1. Использование форматного документа в коде Visual Studio или переформатирования кода с помощью dartfmt в Android studio дает желаемый результат. Какую команду вы используете для форматирования кода, который выдает неправильные выходные данные ?

2. Под автоматическим форматированием я подразумеваю нажатие CTRL ALT L в Android Studio.

3. @Muldec Я обновил фрагмент с более короткими именами, так что это должно произойти с вами даже при ограничении в 80 символов.

4. Хорошо, теперь я это понимаю.

5. Если я правильно их понимаю, каскады-это просто несколько операций над одним и тем же объектом, они не связывают возвращаемое значение каскада над ними.

Ответ №1:

Это немного банально, но вы можете использовать комментарии (даже пустые) для сохранения разрывов строк:

 void main() {
  final list = Stream.fromIterable([1, 2, 3]);
  list //
      .map((a) => a * 2)
      .map((b) => b * 3)
      .reduce((a, b) => a   b);
}
 

Комментарии:

1. Это действительно помогает… Но я собираюсь немного подождать, прежде чем принять этот ответ, чтобы дать кому-то шанс представить менее банальный 🙂