PdaElements.fromMap constructor

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

Implementation

factory PdaElements.fromMap(Map<String, dynamic> map) {
  // Handle both productList (from Kotlin) and product_list (from API)
  final productListData =
      (map['product_list'] ?? map['productList']) as List<dynamic>? ?? [];
  final productList = productListData
      .map((item) => NativeAd.fromMap(Map<String, dynamic>.from(item as Map)))
      .toList();

  List<CarouselCard>? carouselCards;
  if (map['carouselCards'] != null) {
    final carouselCardsData = map['carouselCards'] as List<dynamic>;
    carouselCards = carouselCardsData
        .map((item) =>
            CarouselCard.fromMap(Map<String, dynamic>.from(item as Map)))
        .toList();
  }

  PdaMediaElement? media;
  if (map['media'] != null) {
    media = PdaMediaElement.fromMap(
        Map<String, dynamic>.from(map['media'] as Map));
  }

  List<ThirdPartyTracker>? thirdPartyImpressionTrackers;
  if (map['thirdPartyImpressionTrackers'] != null) {
    final trackersData = map['thirdPartyImpressionTrackers'] as List<dynamic>;
    thirdPartyImpressionTrackers = trackersData
        .map((item) =>
            ThirdPartyTracker.fromMap(Map<String, dynamic>.from(item as Map)))
        .toList();
  }

  List<ThirdPartyTracker>? thirdPartyClickTrackers;
  if (map['thirdPartyClickTrackers'] != null) {
    final clickTrackersData = map['thirdPartyClickTrackers'] as List<dynamic>;
    thirdPartyClickTrackers = clickTrackersData
        .map((item) =>
            ThirdPartyTracker.fromMap(Map<String, dynamic>.from(item as Map)))
        .toList();
  }

  return PdaElements(
    productList: productList,
    media: media,
    width: map['width']?.toString(),
    height: map['height']?.toString(),
    destinationUrl: map['destinationUrl']?.toString(),
    carouselCards: carouselCards,
    thirdPartyImpressionTrackers: thirdPartyImpressionTrackers,
    thirdPartyClickTrackers: thirdPartyClickTrackers,
  );
}