FlutterNativeAd.fromMap constructor
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(),
);
}