Skip to content

Commit be1ed31

Browse files
committed
refactor(headline-details): make ad trigger awaitable and ensure context is mounted
- Modify onEntityChipTap and onSimilarHeadlineTap to be asynchronous - Add checks for context.mounted after ad triggers - Update method signatures to return Future<void> - Add comments for better code readability
1 parent ae5f9a6 commit be1ed31

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

lib/headline-details/view/headline_details_page.dart

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -246,9 +246,15 @@ class _HeadlineDetailsPageState extends State<HeadlineDetailsPage> {
246246
final adService = context.read<AdService>();
247247
final adThemeStyle = AdThemeStyle.fromTheme(Theme.of(context));
248248

249-
void onEntityChipTap(ContentType type, String id) {
250-
context.read<InterstitialAdManager>().onPotentialAdTrigger();
251-
context.pushNamed(
249+
Future<void> onEntityChipTap(ContentType type, String id) async {
250+
// Await for the ad to be shown and dismissed.
251+
await context.read<InterstitialAdManager>().onPotentialAdTrigger();
252+
253+
// Check if the widget is still in the tree before navigating.
254+
if (!context.mounted) return;
255+
256+
// Proceed with navigation after the ad is closed.
257+
await context.pushNamed(
252258
Routes.entityDetailsName,
253259
pathParameters: {'type': type.name, 'id': id},
254260
);
@@ -450,9 +456,15 @@ class _HeadlineDetailsPageState extends State<HeadlineDetailsPage> {
450456
}
451457
}
452458

453-
void onSimilarHeadlineTap(Headline similarHeadline) {
454-
context.read<InterstitialAdManager>().onPotentialAdTrigger();
455-
context.pushNamed(
459+
Future<void> onSimilarHeadlineTap(Headline similarHeadline) async {
460+
// Await for the ad to be shown and dismissed.
461+
await context.read<InterstitialAdManager>().onPotentialAdTrigger();
462+
463+
// Check if the widget is still in the tree before navigating.
464+
if (!context.mounted) return;
465+
466+
// Proceed with navigation after the ad is closed.
467+
await context.pushNamed(
456468
Routes.globalArticleDetailsName,
457469
pathParameters: {'id': similarHeadline.id},
458470
extra: similarHeadline,

0 commit comments

Comments
 (0)