> ## Documentation Index
> Fetch the complete documentation index at: https://beta-guide.daro.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Interstitial Ads

> Implement interstitial ads with the DARO Flutter SDK.

## 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.

<img src="https://mintcdn.com/delightroom-daro-beta/Cj5gm0YF3Gn_WtLl/sdk-integration/common-img/ad-formats-en/interstitial-example-image.png?fit=max&auto=format&n=Cj5gm0YF3Gn_WtLl&q=85&s=f8576649528a4b1cdc0ac8e1d4c1aafb" alt="Interstitial Example Image Pn" title="Interstitial Example Image Pn" style={{ width:"40%" }} width="1080" height="2336" data-path="sdk-integration/common-img/ad-formats-en/interstitial-example-image.png" />

### How It Works

<img src="https://mintcdn.com/delightroom-daro-beta/Cj5gm0YF3Gn_WtLl/sdk-integration/common-img/ad-formats-en/interstitial-example-gif.gif?s=1440689ce64974df9562ffcece4391c9" alt="Interstitial Example Gif Gi" title="Interstitial Example Gif Gi" style={{ width:"40%" }} width="240" height="518" data-path="sdk-integration/common-img/ad-formats-en/interstitial-example-gif.gif" />

***

## Creating Instance and Setting Callbacks

Create a `DaroInterstitialAd` instance and set up callbacks.

```dart theme={null}
import 'package:daro_flutter/daro_flutter.dart';
```

```dart theme={null}
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.

```dart theme={null}
interstitialAd.load();
```

## Showing Ads

Check if the ad is ready with `isReady()`, then display it with `show()`.

```dart theme={null}
final isReady = await interstitialAd.isReady();

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

## Releasing Resources

Call `dispose()` to release resources when done.

```dart theme={null}
interstitialAd.dispose();
```

### Implementation Example

<Accordion title="This is an example implementation of `DaroInterstitialAd`." icon="sparkles">
  ```dart theme={null}
  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.dispose();
      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'),
              ),
            ],
          ),
        ),
      );
    }
  }
  ```
</Accordion>
