这是交易:
我有 4 个类,每个类中有将近 1200 个变量(它们是图标)。
static const IconData access_alarm = IconData(0xe805, fontFamily: _kFontFam);
...
由于所有这些变量在这些类之间具有相同的名称,我想创建一个“全局模板”(abstract class
a.k.a. interface
)以便让开发人员在运行时在这些“图标包”之间进行更改,并帮助我确保所有变量在类之间具有相同的名称,并且所有图标都已设置。
所以我创建了这样的抽象类
:
abstract class MaterialIcons {
static IconData access_alarm;
static IconData access_alarms;
static IconData access_time;
...
有没有办法强制类设置这些变量?
最佳答案
您不能将抽象概念与属性一起使用。您需要创建抽象方法。
这可以通过多种方式完成,但我能想到的最简单的方式是创建 getters :
abstract class MaterialIcons {
IconData get access_alarm;
IconData get access_alarms;
IconData get access_time;
}
创建子类时,正常执行,重写抽象 getter:
class A extends MaterialIcons{
IconData get access_alarm => IconData(0xe805, fontFamily: _kFontFam);
}
如果您没有实现抽象 getter 之一,则会出现以下错误:
Error: The non-abstract class 'A' is missing implementations for these members:
这是您想要的预期行为。
关于dart - 如何强制实现抽象类的类声明其变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60936362/