Skip to content

Commit 5b6311b

Browse files
committed
feat(ads): enhance ad loading with headline image style
- Add headlineImageStyle parameter to getFeedAd and getInArticleAd methods - Pass headlineImageStyle to _loadInlineAd method - Include headlineImageStyle in native ad loading process - Update documentation to reflect new parameter
1 parent 3d2d1c2 commit 5b6311b

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

lib/ads/ad_service.dart

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import 'package:core/core.dart';
22
import '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';
53
import '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';
75
import 'package:flutter_news_app_mobile_client_full_source_code/ads/models/interstitial_ad.dart';
86
import 'package:logging/logging.dart';
97
import '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

Comments
 (0)