Skip to main content

Interstitial Ad Format

Full-screen ads that cover the entire app interface. Includes both image and video ads (video more common), typically skippable after 5 seconds. Interstitial Example Image Pn

How It Works

Interstitial Example Gif Gi

Creating Instance and Setting Callbacks

Create a DaroInterstitialAd instance and set up callbacks.
import 'package:daro_flutter/daro_flutter.dart';
final interstitialAd = DaroInterstitialAd(adUnitId: '{YOUR_AD_UNIT_ID}');

interstitialAd.onAdLoadSuccess = (adInfo) {
  print('Interstitial ad loaded');
};
interstitialAd.onAdLoadFail = (error) {
  print('Interstitial ad failed to load: ${error.message}');
};
interstitialAd.onAdImpression = (adInfo) {
  print('Interstitial ad impression');
};
interstitialAd.onAdClicked = (adInfo) {
  print('Interstitial ad clicked');
};
interstitialAd.onAdShown = (adInfo) {
  print('Interstitial ad shown');
};
interstitialAd.onAdFailedToShow = (error) {
  print('Interstitial ad failed to show: ${error.message}');
};
interstitialAd.onAdDismiss = (adInfo) {
  print('Interstitial ad dismissed');
};

Loading Ads

Call load() to load an ad.
interstitialAd.load();

Showing Ads

Check if the ad is ready with isReady(), then display it with show().
final isReady = await interstitialAd.isReady();

if (isReady) {
  interstitialAd.show();
}

Releasing Resources

Call destroy() to release resources when done.
interstitialAd.destroy();

Implementation Example

import 'package:flutter/material.dart';
import 'package:daro_flutter/daro_flutter.dart';

class InterstitialAdPage extends StatefulWidget {
  const InterstitialAdPage({super.key});

  @override
  State<InterstitialAdPage> createState() => _InterstitialAdPageState();
}

class _InterstitialAdPageState extends State<InterstitialAdPage> {
  late final DaroInterstitialAd _interstitialAd;
  String _status = 'Not Loaded';

  @override
  void initState() {
    super.initState();
    _interstitialAd = DaroInterstitialAd(adUnitId: '{YOUR_AD_UNIT_ID}');
    _setupCallbacks();
  }

  void _setupCallbacks() {
    _interstitialAd.onAdLoadSuccess = (adInfo) {
      setState(() => _status = 'Loaded');
    };

    _interstitialAd.onAdLoadFail = (error) {
      setState(() => _status = 'Failed to Load');
      print('Interstitial ad failed to load: ${error.message}');
    };

    _interstitialAd.onAdShown = (adInfo) {
      setState(() => _status = 'Shown');
    };

    _interstitialAd.onAdFailedToShow = (error) {
      setState(() => _status = 'Failed to Show');
    };

    _interstitialAd.onAdDismiss = (adInfo) {
      setState(() => _status = 'Not Loaded');
    };

    _interstitialAd.onAdClicked = (adInfo) {
      print('Interstitial ad clicked');
    };

    _interstitialAd.onAdImpression = (adInfo) {
      print('Interstitial ad impression');
    };
  }

  @override
  void dispose() {
    _interstitialAd.destroy();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Interstitial Ad')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('Status: $_status'),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: () async {
                final isReady = await _interstitialAd.isReady();
                if (isReady) {
                  _interstitialAd.show();
                } else {
                  setState(() => _status = 'Loading...');
                  _interstitialAd.load();
                }
              },
              child: Text(_status == 'Loaded' ? 'Show Interstitial' : 'Load Interstitial'),
            ),
          ],
        ),
      ),
    );
  }
}