deserializeIcon function

IconData? deserializeIcon(
  1. Map<String, dynamic> iconMap, {
  2. IconPack? iconPack,
})

Implementation

IconData? deserializeIcon(
  Map<String, dynamic> iconMap, {
  IconPack? iconPack,
}) {
  final pack = iconMap['pack'];
  final iconKey = iconMap['key'];

  if (pack == "material" && iconPack == null) {
    throw AssertionError(
        "The argument iconPack is required for material icons in deserializeIcon.");
  }

  try {
    switch (pack) {
      case "material":
        switch (iconPack) {
          case IconPack.material:
            return DefaultMaterial.defaultIcons[iconKey];
          case IconPack.allMaterial:
            return AllMaterial.allIcons[iconKey];
          case IconPack.sharpMaterial:
            return SharpMaterial.sharpIcons[iconKey];
          case IconPack.roundedMaterial:
            return RoundedMaterial.roundedIcons[iconKey];
          case IconPack.outlinedMaterial:
            return OutlinedMaterial.outlinedIcons[iconKey];
          default:
            return DefaultMaterial.defaultIcons[iconKey];
        }
      case "cupertino":
        return Cupertino.cupertinoIcons[iconKey];
      case "fontAwesomeIcons":
        return FontAwesome.fontAwesomeIcons[iconKey];
      case "lineAwesomeIcons":
        return LineAwesome.lineAwesomeIcons[iconKey];
      case "custom":
        final iconData = iconMap['iconData'];
        return IconData(
          iconData['codePoint'],
          fontFamily: iconData['fontFamily'],
          fontPackage: iconData['fontPackage'],
          matchTextDirection: iconData['matchTextDirection'],
        );
      default:
        return null;
    }
  } catch (e) {
    return null;
  }
}