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
have
chevronTop
概述了
但没有
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");
}