customOptionsMap property

Map<String, String>? get customOptionsMap

Consolidated Map of custom options/colors for native ad factories

Implementation

Map<String, String>? get customOptionsMap {
  final Map<String, String> map = customOptions?.toMap() ?? {};

  // Map normalized camelCase keys for consistency across Android and iOS factories
  if (map.containsKey('bgcolor') && !map.containsKey('backgroundColor')) {
    map['backgroundColor'] = map['bgcolor']!;
  }
  if (map.containsKey('buttoncolor') && !map.containsKey('buttonColor')) {
    map['buttonColor'] = map['buttoncolor']!;
  }
  if (map.containsKey('buttontxtcolor') && !map.containsKey('textColor')) {
    map['textColor'] = map['buttontxtcolor']!;
  }
  if (map.containsKey('headertextcolor') && !map.containsKey('titleColor')) {
    map['titleColor'] = map['headertextcolor']!;
  }
  if (map.containsKey('header1textcolor') &&
      !map.containsKey('bodyTextColor')) {
    map['bodyTextColor'] = map['header1textcolor']!;
  }
  if (map.containsKey('adbadgebgcolor') &&
      !map.containsKey('adBadgeBgColor')) {
    map['adBadgeBgColor'] = map['adbadgebgcolor']!;
  }
  if (map.containsKey('adbadgetextcolor') &&
      !map.containsKey('adBadgeTextColor')) {
    map['adBadgeTextColor'] = map['adbadgetextcolor']!;
  }
  if (map.containsKey('adbadgebordercolor') &&
      !map.containsKey('adBadgeBorderColor')) {
    map['adBadgeBorderColor'] = map['adbadgebordercolor']!;
  }
  if (map.containsKey('bordercolor') && !map.containsKey('borderColor')) {
    map['borderColor'] = map['bordercolor']!;
  }
  if (map.containsKey('iconcolor') && !map.containsKey('iconColor')) {
    map['iconColor'] = map['iconcolor']!;
  }
  if (map.containsKey('iconbgcolor') && !map.containsKey('iconBgColor')) {
    map['iconBgColor'] = map['iconbgcolor']!;
  }

  // Fallback to customColors sub-object if present
  if (customColors != null) {
    if ((customColors!.buttonColor?.isNotEmpty ?? false) &&
        !map.containsKey('buttonColor')) {
      map['buttonColor'] = customColors!.buttonColor!;
    }
    if ((customColors!.textColor?.isNotEmpty ?? false) &&
        !map.containsKey('textColor')) {
      map['textColor'] = customColors!.textColor!;
    }
    if ((customColors!.primary?.isNotEmpty ?? false) &&
        !map.containsKey('titleColor')) {
      map['titleColor'] = customColors!.primary!;
    }
    if ((customColors!.screenBackgroundColor?.isNotEmpty ?? false) &&
        !map.containsKey('backgroundColor')) {
      map['backgroundColor'] = customColors!.screenBackgroundColor!;
    }
  }

  return map.isEmpty ? null : map;
}