这听起来可能是广泛而无知的,可能是因为它是我。
在这里:
在页面https://medium.com/coding-with-flutter/flutter-the-power-of-small-and-reusable-widgets-7649e3b0bca2上,我找到了以下示例代码,用于设置一个类来定义调色板,例如:(为简洁起见,简称为
)class Palette {
static Color blueSky = Color(0xFF068FFA);
static Color greenLand = Color(0xFF89ED91);
static Color blueSkyLight = Color(0x40068FFA);
static Color greenLandLight = Color(0x4089ED91);
static Color blueSkyLighter = Color(0x10068FFA);
}
该类随后将按以下方式使用:
Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
Palette.blueSky,
Palette.greenLand,
],
),
)
);
现在有人让我困惑:定义类的意义何在?为什么不简单地定义一堆变量,像这样:
static Color _blueSky = Color(0xFF068FFA);
static Color _greenLand = Color(0xFF89ED91);
static Color _blueSkyLight = Color(0x40068FFA);
static Color _greenLandLight = Color(0x4089ED91);
static Color _blueSkyLighter = Color(0x10068FFA);
...然后再像这样使用:
Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
_blueSky,
_greenLand,
],
),
)
);
我的意思是,它显然更短(即使我甚至使用那些荒谬的下划线将vars私有化,这也是我发现毫无意义的另一件事),而且我认为在定义时任何都没有好处简单定义一些变量的类。零。为什么使事情变得不必要地复杂?
这真的是纯粹的“编码哲学”(无论应该指的是什么)还是“编码风格”的个人品味的问题?因为那就是我的全部情况。
答案 0 :(得分:2)
Flutter甚至对Colors
类也做了这件事。
它:
为变量提供上下文。例如,“蓝色”在Android和iOS上是不同的。理应在您的自定义应用中有所不同。
提高了可发现性。对于一个类,我们可以输入Palette.
,IDE会列出所有可能性。
防止混淆名称阴影。我们可以命名变量blue
,但仍然可以使用Palette.blue
与Dart导入(显示/隐藏指令)配合良好
示例:
export 'colors.dart' show Palette;
这比以下要好得多:
export 'colors.dart' show blue, red, green, purple, ...;