在Dart类中 Group静态常量



我有一个Icon类称为KIcons。在这个类中,我有两种类型的图标。一个是Solid,另一个是Outlined。现在我想像下面这样访问它。怎么做呢?期望输出:KIcons.solid.back_arrow这样做的原因是,当我输入KIcons.solid时,我应该只得到grouping下定义的const的列表,因为两者都有相同和不同的图标。我该如何做到这一点?

目前我有一个屋檐下的一切命名像solidArrowLeft访问KIcons.solidArrowLeft

代码:

class KIcons {
// solid
static const String solidArrowLeft = "assets/icons/solid/arrow-left.svg";
static const String solidArrowRight = "assets/icons/solid/arrow-right.svg";
static const String solidArrowTop = "assets/icons/solid/arrow-Top.svg";
static const String solidArrowBottom = "assets/icons/solid/arrow-bottom.svg";
static const String solidChevronLeft = "assets/icons/solid/chevron-left.svg";
static const String solidChevronRight =
"assets/icons/solid/chevron-right.svg";
static const String solidChevronTop = "assets/icons/solid/chevron-Top.svg";
static const String solidChevronBottom =
"assets/icons/solid/chevron-bottom.svg";
static const String solidArrowCircleLeft =
"assets/icons/solid/arrow-circle-left.svg";
static const String solidArrowCircleRight =
"assets/icons/solid/arrow-circle-right.svg";
static const String solidArrowCircleTop =
"assets/icons/solid/arrow-circle-Top.svg";
static const String solidArrowCircleBottom =
"assets/icons/solid/arrow-circle-bottom.svg";
// outlined
static const String outlineArrowLeft = "assets/icons/outline/arrow-left.svg";
static const String outlineArrowRight =
"assets/icons/outline/arrow-right.svg";
static const String outlineArrowTop = "assets/icons/outline/arrow-Top.svg";
static const String outlineArrowBottom =
"assets/icons/outline/arrow-bottom.svg";
static const String outlineChevronLeft =
"assets/icons/outline/chevron-left.svg";
static const String outlineChevronRight =
"assets/icons/outline/chevron-right.svg";
static const String outlineChevronTop =
"assets/icons/outline/chevron-Top.svg";
static const String outlineChevronBottom =
"assets/icons/outline/chevron-bottom.svg";
static const String outlineArrowCircleLeft =
"assets/icons/outline/arrow-circle-left.svg";
static const String outlineArrowCircleRight =
"assets/icons/outline/arrow-circle-right.svg";
static const String outlineArrowCircleTop =
"assets/icons/outline/arrow-circle-Top.svg";
static const String outlineArrowCircleBottom =
"assets/icons/outline/arrow-circle-bottom.svg";
}

如果你能帮助我,我会很感激:)

像这样?

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");
}

最新更新