11import 'package:core/core.dart' ;
22import 'package:flutter_news_app_mobile_client_full_source_code/ads/ad_provider.dart' ;
3- import 'package:core/core.dart' ;
4- import 'package:flutter_news_app_mobile_client_full_source_code/ads/ad_provider.dart' ;
53import 'package:flutter_news_app_mobile_client_full_source_code/ads/models/ad_theme_style.dart' ;
6- import 'package:flutter_news_app_mobile_client_full_source_code/ads/models/inline_ad.dart' ; // Import InlineAd
4+ import 'package:flutter_news_app_mobile_client_full_source_code/ads/models/inline_ad.dart' ;
75import 'package:flutter_news_app_mobile_client_full_source_code/ads/models/interstitial_ad.dart' ;
86import 'package:logging/logging.dart' ;
97import 'package:uuid/uuid.dart' ;
@@ -53,16 +51,20 @@ class AdService {
5351 /// - [adConfig] : The remote configuration for ad display rules.
5452 /// - [adType] : The specific type of inline ad to load ([AdType.native] or [AdType.banner] ).
5553 /// - [adThemeStyle] : UI-agnostic theme properties for ad styling.
54+ /// - [headlineImageStyle] : The user's preference for feed layout,
55+ /// which can be used to request an appropriately sized ad.
5656 Future <InlineAd ?> getFeedAd ({
5757 required AdConfig adConfig,
5858 required AdType adType,
5959 required AdThemeStyle adThemeStyle,
60+ HeadlineImageStyle ? headlineImageStyle,
6061 }) async {
6162 return _loadInlineAd (
6263 adConfig: adConfig,
6364 adType: adType,
6465 adThemeStyle: adThemeStyle,
6566 feedAd: true ,
67+ headlineImageStyle: headlineImageStyle,
6668 );
6769 }
6870
@@ -152,15 +154,19 @@ class AdService {
152154 ///
153155 /// - [adConfig] : The remote configuration for ad display rules.
154156 /// - [adThemeStyle] : UI-agnostic theme properties for ad styling.
157+ /// - [headlineImageStyle] : The user's preference for feed layout,
158+ /// which can be used to request an appropriately sized ad.
155159 Future <InlineAd ?> getInArticleAd ({
156160 required AdConfig adConfig,
157161 required AdThemeStyle adThemeStyle,
162+ HeadlineImageStyle ? headlineImageStyle,
158163 }) async {
159164 return _loadInlineAd (
160165 adConfig: adConfig,
161166 adType: adConfig.articleAdConfiguration.defaultInArticleAdType,
162167 adThemeStyle: adThemeStyle,
163168 feedAd: false ,
169+ headlineImageStyle: headlineImageStyle,
164170 );
165171 }
166172
@@ -174,13 +180,16 @@ class AdService {
174180 /// - [adType] : The specific type of inline ad to load ([AdType.native] or [AdType.banner] ).
175181 /// - [adThemeStyle] : UI-agnostic theme properties for ad styling.
176182 /// - [feedAd] : A boolean indicating if this is for a feed ad (true) or in-article ad (false).
183+ /// - [headlineImageStyle] : The user's preference for feed layout,
184+ /// which can be used to request an appropriately sized ad.
177185 ///
178186 /// Returns an [InlineAd] if an ad is successfully loaded, otherwise `null` .
179187 Future <InlineAd ?> _loadInlineAd ({
180188 required AdConfig adConfig,
181189 required AdType adType,
182190 required AdThemeStyle adThemeStyle,
183191 required bool feedAd,
192+ HeadlineImageStyle ? headlineImageStyle,
184193 }) async {
185194 // Check if ads are globally enabled and specifically for the context (feed or article).
186195 if (! adConfig.enabled ||
@@ -246,12 +255,14 @@ class AdService {
246255 adPlatformIdentifiers: platformAdIdentifiers,
247256 adId: adId,
248257 adThemeStyle: adThemeStyle,
258+ headlineImageStyle: headlineImageStyle,
249259 );
250260 case AdType .banner:
251261 loadedAd = await adProvider.loadBannerAd (
252262 adPlatformIdentifiers: platformAdIdentifiers,
253263 adId: adId,
254264 adThemeStyle: adThemeStyle,
265+ headlineImageStyle: headlineImageStyle,
255266 );
256267 case AdType .interstitial:
257268 case AdType .video:
0 commit comments