initialize static method

Future<void> initialize({
  1. String? nativeAdUnitId,
  2. String? bannerAdUnitId,
  3. String? interstitialAdUnitId,
  4. String? rewardedAdUnitId,
  5. String? appOpenAdUnitId,
  6. String? rewardedInterstitialAdUnitId,
  7. bool? useHybridComposition,
})

Before creating any native ads, you must initalize the admob. This can be done only once, ideally at app launch. If you try to initialize it more than once, an AssertionError is thrown

void main() async {
  MobileAds.initialize();
  runApp(MyApp());
}

This method must be called in the main thread/isolate
You can find a complete example here
For more info on intialization, read the documentation

Implementation

static Future<void> initialize({
  String? nativeAdUnitId,
  String? bannerAdUnitId,
  String? interstitialAdUnitId,
  String? rewardedAdUnitId,
  String? appOpenAdUnitId,
  String? rewardedInterstitialAdUnitId,
  bool? useHybridComposition,
}) async {
  assertPlatformIsSupported();
  WidgetsFlutterBinding.ensureInitialized();
  assert(
    !isInitialized,
    '''The mobile ads sdk is already initialized. It can be initialized only once
    Check if it's initialized before trying to initialize it using `MobileAds.isInitialized`
    For more info on initialization, visit https://github.com/bdlukaa/native_admob_flutter/wiki/Initialize#initialize-the-mobile-ads-sdk''',
  );

  // Ad Ids
  MobileAds.nativeAdUnitId ??= nativeAdUnitId ?? nativeAdTestUnitId;
  _debugCheckIsTestId(MobileAds.nativeAdUnitId, [
    nativeAdTestUnitId,
    nativeAdVideoTestUnitId,
  ]);

  MobileAds.bannerAdUnitId ??= bannerAdUnitId ?? bannerAdTestUnitId;
  _debugCheckIsTestId(MobileAds.bannerAdUnitId, [bannerAdTestUnitId]);

  MobileAds.interstitialAdUnitId ??=
      interstitialAdUnitId ?? interstitialAdTestUnitId;
  _debugCheckIsTestId(MobileAds.interstitialAdUnitId, [
    interstitialAdTestUnitId,
    interstitialAdVideoTestUnitId,
  ]);

  MobileAds.rewardedAdUnitId ??= rewardedAdUnitId ?? rewardedAdTestUnitId;
  _debugCheckIsTestId(MobileAds.rewardedAdUnitId, [rewardedAdTestUnitId]);

  MobileAds.appOpenAdUnitId ??= appOpenAdUnitId ?? appOpenAdTestUnitId;
  _debugCheckIsTestId(MobileAds.appOpenAdUnitId, [appOpenAdTestUnitId]);

  MobileAds.rewardedInterstitialAdUnitId =
      rewardedInterstitialAdUnitId ?? rewardedInterstitialAdTestUnitId;
  _debugCheckIsTestId(MobileAds.rewardedInterstitialAdUnitId, [
    rewardedInterstitialAdTestUnitId,
  ]);

  // Make sure the version is supported
  _version = (await _pluginChannel.invokeMethod<int>('initialize'))!;
  assertVersionIsSupported(false);
  if (Platform.isAndroid) {
    // hybrid composition is enabled in android 19 and can't be disabled
    MobileAds.useHybridComposition =
        osVersion == 19 ? true : useHybridComposition ?? false;

    if (osVersion >= 29 && MobileAds.useHybridComposition) {
      print(
        'It is NOT recommended to use hybrid composition on Android 10 or greater. '
        'It has some performance drawbacks',
      );
    }
  } else {
    if (!(useHybridComposition ?? true))
      print(
        'Virtual display is not avaiable on iOS. Using hybrid composition',
      );
  }
  _initialized = true;
}