首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dart类中的群静态const

Dart类中的群静态const
EN

Stack Overflow用户
提问于 2021-03-06 15:43:07
回答 1查看 93关注 0票数 0

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

目前,我有一个屋檐下的每一件事,并将其命名为solidArrowLeft accessibile,称为KIcons.solidArrowLeft

代码:

代码语言:javascript
复制
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";
}

如能提供帮助,将不胜感激:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-06 16:58:45

像这样吗?

代码语言:javascript
复制
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";
}

示例,如果您在类型之间有一些差异:

代码语言:javascript
复制
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");
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66507516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档