FlutterNativeAd.fromMap constructor

FlutterNativeAd.fromMap(
  1. Map<String, dynamic> map
)

Creates a FlutterNativeAd instance from a map received from the native platform.

Implementation

factory FlutterNativeAd.fromMap(Map<String, dynamic> map) {
  // Handle images as either a list of maps (new) or a comma-separated string (old)
  List<FlutterNativeAdImage> imagesList = [];
  final imagesData = map['images'];

  if (imagesData is List) {
    imagesList = imagesData
        .map((e) => FlutterNativeAdImage.fromMap(Map<String, dynamic>.from(e as Map)))
        .toList();
  } else if (imagesData is String && imagesData.isNotEmpty) {
    imagesList = imagesData.split(',').map((url) => FlutterNativeAdImage(url: url)).toList();
  }

  // Handle icon similarly
  FlutterNativeAdImage? icon;
  final iconData = map['icon'];
  if (iconData is Map) {
    icon = FlutterNativeAdImage.fromMap(Map<String, dynamic>.from(iconData));
  } else if (iconData is String) {
    icon = FlutterNativeAdImage(url: iconData);
  }

  return FlutterNativeAd(
    id: map['id'] as String,
    headline: map['headline'] as String?,
    body: map['body'] as String?,
    advertiser: map['advertiser'] as String?,
    icon: icon,
    images: imagesList,
    cta: map['cta'] as String?,
    starRating:
        (map['starRating'] as num?)?.toDouble() ?? double.tryParse(map['starRating'] as String? ?? ""),
    store: map['store'] as String?,
    price: map['price'] as String?,
    adChoicesUrl: map['adChoicesUrl'] as String?,
    adChoicesText: map['adChoicesText'] as String?,
    aspectRatio: (map['aspectRatio'] as num?)?.toDouble(),
  );
}