这听起来可能很宽泛和无知,可能是因为我就是这样。
这里是:
在页面上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,
],
),
)
);
我的意思是,它显然更短(即使我什至使用那些可笑的下划线将变量设为私有(private),这是我认为毫无意义的另一件事),而且我看不到定义任何的好处一个简单地定义一些变量的类。零。为什么要把事情搞得不必要的复杂?
这真的纯粹是“编码哲学”(无论其确切含义是什么)或个人对“编码风格”的品味的问题吗?因为这就是我的看法。
最佳答案
这甚至是 Flutter 对 Colors
类所做的事情。
它:
为变量提供上下文。例如,“蓝色”在 Android 和 iOS 上不是一回事。它在您的自定义应用程序中可能会有所不同。
提高可发现性。对于类,我们可以键入
Palette.
,IDE 将列出所有可能性。防止混淆名称阴影。我们可以将变量命名为
blue
并且我们仍然可以使用Palette.blue
与 Dart 导入(显示/隐藏指令)配合良好
例子:
export 'colors.dart' show Palette;
这比:
export 'colors.dart' show blue, red, green, purple, ...;
关于class - 定义类的要点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54972487/