Class Dart类中的组静态常量
我有一个名为Class Dart类中的组静态常量,class,dart,static,grouping,Class,Dart,Static,Grouping,我有一个名为KIcons的图标类。在这个类中,我有两种类型的图标。一个是实体,另一个是轮廓。现在我想访问它如下。如何做到这一点? 预期输出:KIcons.solid.back\u箭头 原因是,当我键入KIcons.solid时,我应该只获取在此分组下定义的const列表,因为两者都有相同和不同的图标。我应该如何做到这一点 目前,我将所有东西都放在一个屋顶下,命名为solidArrowLeft可访问为KIcons.solidArrowLeft 代码: 如果您能提供帮助,我们将不胜感激:)像这样的服
KIcons
的图标类。在这个类中,我有两种类型的图标。一个是实体
,另一个是轮廓
。现在我想访问它如下。如何做到这一点?
预期输出:KIcons.solid.back\u箭头
原因是,当我键入KIcons.solid
时,我应该只获取在此分组下定义的const
列表,因为两者都有相同和不同的图标。我应该如何做到这一点
目前,我将所有东西都放在一个屋顶下,命名为solidArrowLeft
可访问为KIcons.solidArrowLeft
代码:
如果您能提供帮助,我们将不胜感激:)像这样的服务吗
class KIcons {
// solid
static const _KIconsSubType solid = _KIconsSubType('solid');
// outlined
static const _KIconsSubType outlined = _KIconsSubType('outlined');
}
class _KIconsSubType {
final String arrowLeft;
final String arrowRight;
final String arrowTop;
final String arrowBottom;
final String chevronLeft;
final String chevronRight;
final String chevronTop;
final String chevronBottom;
final String arrowCircleLeft;
final String arrowCircleRight;
final String arrowCircleTop;
final String arrowCircleBottom;
const _KIconsSubType(String type)
: arrowLeft = "assets/icons/$type/arrow-left.svg",
arrowRight = "assets/icons/$type/arrow-right.svg",
arrowTop = "assets/icons/$type/arrow-Top.svg",
arrowBottom = "assets/icons/$type/arrow-bottom.svg",
chevronLeft = "assets/icons/$type/chevron-left.svg",
chevronRight = "assets/icons/$type/chevron-right.svg",
chevronTop = "assets/icons/$type/chevron-Top.svg",
chevronBottom = "assets/icons/$type/chevron-bottom.svg",
arrowCircleLeft = "assets/icons/$type/arrow-circle-left.svg",
arrowCircleRight = "assets/icons/$type/arrow-circle-right.svg",
arrowCircleTop = "assets/icons/$type/arrow-circle-Top.svg",
arrowCircleBottom = "assets/icons/$type/arrow-circle-bottom.svg";
}
示例:如果两种类型之间存在一些差异:
class KIcons {
// solid
static const _KIconsSolid solid = _KIconsSolid();
// outlined
static const _KIconsOutlined outlined = _KIconsOutlined();
}
class _KIconsSubTypeCommon {
final String arrowLeft;
final String arrowRight;
final String arrowTop;
final String arrowBottom;
final String chevronLeft;
final String chevronRight;
// final String chevronTop;
final String chevronBottom;
final String arrowCircleLeft;
final String arrowCircleRight;
final String arrowCircleTop;
final String arrowCircleBottom;
const _KIconsSubTypeCommon(String type)
: arrowLeft = "assets/icons/$type/arrow-left.svg",
arrowRight = "assets/icons/$type/arrow-right.svg",
arrowTop = "assets/icons/$type/arrow-Top.svg",
arrowBottom = "assets/icons/$type/arrow-bottom.svg",
chevronLeft = "assets/icons/$type/chevron-left.svg",
chevronRight = "assets/icons/$type/chevron-right.svg",
// chevronTop = "assets/icons/solid/chevron-Top.svg",
chevronBottom = "assets/icons/$type/chevron-bottom.svg",
arrowCircleLeft = "assets/icons/$type/arrow-circle-left.svg",
arrowCircleRight = "assets/icons/$type/arrow-circle-right.svg",
arrowCircleTop = "assets/icons/$type/arrow-circle-Top.svg",
arrowCircleBottom = "assets/icons/$type/arrow-circle-bottom.svg";
}
class _KIconsSolid extends _KIconsSubTypeCommon {
final String chevronTop;
const _KIconsSolid()
: chevronTop = "assets/icons/solid/chevron-Top.svg",
super("solid");
}
class _KIconsOutlined extends _KIconsSubTypeCommon {
const _KIconsOutlined() : super("outlined");
}
我有三个问题。一是什么是这个电话,我在哪里可以读更多,因为我仍然在学习做这件事的基本知识。由于您已使此图标变为可用,但如果我们没有相同的图标,则应执行什么操作/例如,solid
havechevronTop
但概述了但没有chevronTop
。为此,我必须为大纲创建一个新的类,因为我们不需要显示那些图标下不存在的内容。@princeoo7好吧,我的第一个示例实际上只是使用构造函数,并认识到什么时候我们可以简化内容并使用参数,而不是将大部分相同的代码重写两次。我的第二个例子使用继承,这样我们就可以有一个公共类,我们可以重用它,然后我们有特定的子类,我们可以用它来添加更多我们需要的东西。谢谢你的帮助和解释:)非常感谢帮助:)而不是final
我需要变量是const
,但是得到常量“不透明”必须初始化。请尝试向声明中添加初始化。
任何建议。@princeoo7我的示例中的所有变量都可以用作常量值(它们在具有常量构造函数的类中都是最终变量)。我认为您应该提出一个新的问题,在这里您可以显示带有错误的代码,并尝试更详细地解释您试图实现的目标。
class KIcons {
// solid
static const _KIconsSolid solid = _KIconsSolid();
// outlined
static const _KIconsOutlined outlined = _KIconsOutlined();
}
class _KIconsSubTypeCommon {
final String arrowLeft;
final String arrowRight;
final String arrowTop;
final String arrowBottom;
final String chevronLeft;
final String chevronRight;
// final String chevronTop;
final String chevronBottom;
final String arrowCircleLeft;
final String arrowCircleRight;
final String arrowCircleTop;
final String arrowCircleBottom;
const _KIconsSubTypeCommon(String type)
: arrowLeft = "assets/icons/$type/arrow-left.svg",
arrowRight = "assets/icons/$type/arrow-right.svg",
arrowTop = "assets/icons/$type/arrow-Top.svg",
arrowBottom = "assets/icons/$type/arrow-bottom.svg",
chevronLeft = "assets/icons/$type/chevron-left.svg",
chevronRight = "assets/icons/$type/chevron-right.svg",
// chevronTop = "assets/icons/solid/chevron-Top.svg",
chevronBottom = "assets/icons/$type/chevron-bottom.svg",
arrowCircleLeft = "assets/icons/$type/arrow-circle-left.svg",
arrowCircleRight = "assets/icons/$type/arrow-circle-right.svg",
arrowCircleTop = "assets/icons/$type/arrow-circle-Top.svg",
arrowCircleBottom = "assets/icons/$type/arrow-circle-bottom.svg";
}
class _KIconsSolid extends _KIconsSubTypeCommon {
final String chevronTop;
const _KIconsSolid()
: chevronTop = "assets/icons/solid/chevron-Top.svg",
super("solid");
}
class _KIconsOutlined extends _KIconsSubTypeCommon {
const _KIconsOutlined() : super("outlined");
}