imagesFromJson static method

List<ProductImage>? imagesFromJson(
  1. Map? json
)

Returns ProductImages from a JSON map for "Images"

Implementation

static List<ProductImage>? imagesFromJson(Map? json) {
  if (json == null) return null;

  var imageList = <ProductImage>[];

  for (var field in ImageField.values) {
    for (OpenFoodFactsLanguage lang in OpenFoodFactsLanguage.values) {
      // get the field object e.g. front_en
      final String fieldName = '${field.offTag}_${lang.offTag}';
      if (json[fieldName] == null) continue;

      final fieldObject = json[fieldName] as Map<String, dynamic>?;
      if (fieldObject == null) continue;

      final rev = JsonObject.parseInt(fieldObject['rev']);
      final String imgid = fieldObject['imgid'].toString();
      final ImageAngle? angle = ImageAngleExtension.fromInt(
        JsonObject.parseInt(fieldObject['angle']),
      );
      final String? coordinatesImageSize =
          fieldObject['coordinates_image_size']?.toString();
      final int? x1 = JsonObject.parseInt(fieldObject['x1']);
      final int? y1 = JsonObject.parseInt(fieldObject['y1']);
      final int? x2 = JsonObject.parseInt(fieldObject['x2']);
      final int? y2 = JsonObject.parseInt(fieldObject['y2']);

      // get the sizes object
      var sizesObject = fieldObject['sizes'] as Map<String, dynamic>?;
      if (sizesObject == null) continue;

      // get each number object (e.g. 200)
      for (var size in ImageSize.values) {
        var number = size.number;
        var numberObject = sizesObject[number] as Map<String, dynamic>?;
        if (numberObject == null) continue;

        var image = ProductImage(
          field: field,
          size: size,
          language: lang,
          rev: rev,
          imgid: imgid,
          angle: angle,
          coordinatesImageSize: coordinatesImageSize,
          x1: x1,
          y1: y1,
          x2: x2,
          y2: y2,
        );
        imageList.add(image);
      }
    }
  }

  return imageList;
}