Как сделать Dartfmt "дружественным" для матриц? - PullRequest
1 голос
/ 29 мая 2020

Для Матрицы, которая должна выглядеть так:

const ColorFilter sepia = ColorFilter.matrix(<double>[
          0.393, 0.769, 0.189, 0, 0,
          0.349, 0.686, 0.168, 0, 0,
          0.272, 0.534, 0.131, 0, 0,
          0,     0,     0,     1, 0,
        ]);

Но dartfmt изменил ее так, чтобы она стала такой:

const ColorFilter sepia = ColorFilter.matrix(<double>[
          0.393,
          0.769,
          0.189,
          0,
          0,
          0.349,
          0.686,
          0.168,
          0,
          0,
          0.272,
          0.534,
          0.131,
          0,
          0,
          0,
          0,
          0,
          1,
          0,
        ]);

Это трудно читать. Таким образом, как я могу сохранить исходный формат, чтобы Матрица была видна более «дружелюбной». Или, по крайней мере, как я могу заставить Dartfmt не переформатировать какой-либо список?

Ответы [ 2 ]

3 голосов
/ 29 мая 2020

Этот сценарий описан в FAQ dart_style, на котором основан dartfmt:

https://github.com/dart-lang/dart_style/wiki/FAQ#why -does-the-formatter-mess-up-my-collection-literals

Короче говоря, вам просто нужно добавить комментарий где-нибудь в определении матрицы, например:

const ColorFilter sepia = ColorFilter.matrix(<double>[
          0.393, 0.769, 0.189, 0, 0, //
          0.349, 0.686, 0.168, 0, 0,
          0.272, 0.534, 0.131, 0, 0,
          0,     0,     0,     1, 0,
        ]);

Тогда dartfmt не будет пытаться форматировать символы новой строки в матрице. Однако он по-прежнему исправляет ненужные пробелы, поэтому он преобразует ваш пример в:

const ColorFilter sepia = ColorFilter.matrix(<double>[
  0.393, 0.769, 0.189, 0, 0, //
  0.349, 0.686, 0.168, 0, 0,
  0.272, 0.534, 0.131, 0, 0,
  0, 0, 0, 1, 0,
]);

Что можно исправить, изменив 0 на 0,000:

const ColorFilter sepia = ColorFilter.matrix(<double>[
  0.393, 0.769, 0.189, 0, 0, //
  0.349, 0.686, 0.168, 0, 0,
  0.272, 0.534, 0.131, 0, 0,
  0.000, 0.000, 0.000, 1, 0,
]);
0 голосов
/ 29 мая 2020

В то время как ответ @ julemand101 должен быть принятым, поскольку он напрямую меняет поведение dartfmt, стоит упомянуть об обходном пути оператора распространения:

final matrix = [
   ...[1, 2, 3],
   ...[4, 5, 6],
   ...[7, 8, 9],
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...