对于应该看起来像这样的矩阵:

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,
        ]);

这很难读。因此,如何保持原始格式,以便可以更“友好地”看到Matrix。或者至少如何使Dartfmt不重新格式化任何列表?

最佳答案

dartfmt基于dart_style的FAQ中描述了这种情况:

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,
]);

关于dart - 如何为矩阵制作Dartfmt “friendly”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62081162/

10-11 09:13