Правильное форматирование флаттера/дротика

Я работаю в некотором флаттер-коде. Код размещает закрывающие фигурные скобки в одной строке. Кроме того, когда я запускаю Format Document в VSCode, фигурные скобки также складываются в одну строку.

Вот так (см. последнюю строку)...

return Container(
    width: 200,
    child: CupertinoTextField(
        maxLength: 10,
        textCapitalization: TextCapitalization.characters,
        focusNode: focusNode,
        decoration: BoxDecoration(
            border: Border.all(color: Colors.white.withOpacity(0))),
        style: accentTextStyle,
        placeholder: "NAME",
        textAlign: TextAlign.center,
        keyboardAppearance: Brightness.dark,
        controller: _textController,
        onChanged: (s) {
          navigation.update();
          if (s == '') {
            program.name = 'UNNAMED${navigation.programsCounter}';
            return;
          }
          program.name = s.toUpperCase();
        }));

Но в документации по флаттеру и в примере кода все примеры используют следующий формат (где фигурные скобки находятся на отдельных строках).

return Container(
  width: 200,
  child: CupertinoTextField(
    maxLength: 10,
    textCapitalization: TextCapitalization.characters,
    focusNode: focusNode,
    decoration: BoxDecoration(
        border: Border.all(color: Colors.white.withOpacity(0))),
    style: accentTextStyle,
    placeholder: "NAME",
    textAlign: TextAlign.center,
    keyboardAppearance: Brightness.dark,
    controller: _textController,
    onChanged: (s) {
      navigation.update();
      if (s == '') {
        program.name = 'UNNAMED${navigation.programsCounter}';
        return;
      }
      program.name = s.toUpperCase();
    }
  )
);

Какой правильный формат? Кроме того, использует ли Format Document расширение dart для получения правильного формата?


person Scorb    schedule 26.10.2020    source источник
comment
Хорошо, вы можете посмотреть часть редактирования в конце ответа: stackoverflow.com/a/64543605/10659482   -  person Akif    schedule 26.10.2020


Ответы (2)


Вы можете использовать запятую (,) в конце фигурных скобок. Затем «Формат документа» разделит строки для каждой фигурной скобки. Попробуй это:

return Container(
 width: 200,
 child: CupertinoTextField(
    maxLength: 10,
    textCapitalization: TextCapitalization.characters,
    focusNode: focusNode,
    decoration: BoxDecoration(
        border: Border.all(color: Colors.white.withOpacity(0))),
    style: accentTextStyle,
    placeholder: "NAME",
    textAlign: TextAlign.center,
    keyboardAppearance: Brightness.dark,
    controller: _textController,
    onChanged: (s) {
      navigation.update();
      if (s == '') {
        program.name = 'UNNAMED${navigation.programsCounter}';
        return;
      }
      program.name = s.toUpperCase();
    },
   ),
  );

Изменить:

Хорошо, вы ищете правильный метод. Как указано в официальном документе, вы должны использовать запятые в конце.

Чтобы получить хорошее автоматическое форматирование, мы рекомендуем использовать необязательные запятые в конце.

person Akif    schedule 26.10.2020

Вы также можете получить такой же отступ, добавив commas между фигурными скобками и нажав кнопку отступа:

  • Код ВС: alt + shift + f
  • Android-студия: ctrl + alt + l

У меня работает отлично :)

Добавление запятых, например:

onChanged: (s) {
          navigation.update();
          if (s == '') {
            program.name = 'UNNAMED${navigation.programsCounter}';
            return;
          }
          program.name = s.toUpperCase();
        },),);

После отступа:

    onChanged: (s) {
      navigation.update();
      if (s == '') {
        program.name = 'UNNAMED${navigation.programsCounter}';
        return;
      }
      program.name = s.toUpperCase();
    },
  ),
);
person Hamza    schedule 26.10.2020
comment
Хотя на самом деле это не отвечает на вопрос. - person Scorb; 26.10.2020
comment
Сэр, нет правильного формата. Вам решать, что вам подходит. Я только что добавил, как получить хорошо отформатированный код. P.S. Я не слышал ни от одного инженера Flutter о форматах. Они порекомендовали решение, которым я поделился с вами :) Ура, добрый день :) - person Hamza; 26.10.2020
comment
Нет правильного формата, это тот, который указан в проекте dartfmt, который является самоуверенным форматировщиком. Поэтому мне любопытно, использует ли VSCode это или нет, и какой формат соответствует. - person Scorb; 26.10.2020
comment
Я думаю, что это может быть расширение .dart, но если вы добавите commas, он отформатирует их надлежащим образом, заканчивая //Container, как комментарии для большего пояснения :) - person Hamza; 26.10.2020