flutter_admob_kit 3.0.3 copy "flutter_admob_kit: ^3.0.3" to clipboard
flutter_admob_kit: ^3.0.3 copied to clipboard

AdMob library for Flutter with Banner, Interstitial, Rewarded, App Open, and Native ads support.

flutter_admob_kit #

pub version License: MIT Platform

Flutter port of shahid0/AdMobKit (Swift/SwiftUI).

Same ViewModel pattern. Same callbacks. Same isInProScreen guard. Just Flutter.


โœจ Features #

Feature Details
๐Ÿ“บ All ad formats Banner, Interstitial, Rewarded, Rewarded Interstitial, App Open, Native
๐Ÿ”„ Auto retry Retries failed loads up to 3 times (2s, 4s, 6s backoff)
โฑ๏ธ Expiry handling Discards stale ads automatically โ€” no more black screens
๐Ÿช™ Coin tracking coins property with onCoinsEarned callback
๐Ÿ›ก๏ธ Paywall guard AppOpenAdManager.isInProScreen prevents ads on purchase screens
๐Ÿ” Click threshold Show interstitial after N clicks automatically

๐Ÿ“ฆ Installation #

dependencies:
  flutter_admob_kit: ^3.0.2
flutter pub get

๐Ÿš€ Setup #

Initialize once in main.dart:

import 'package:google_mobile_ads/google_mobile_ads.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await MobileAds.instance.initialize();
  runApp(const MyApp());
}

๐Ÿ“ฑ Usage #

// Swift: BannerAdView(AdUnitID: "...", adLoadFailed: $failed)
BannerAdWidget(
  adUnitId: 'ca-app-pub-XXXX/XXXX',
  onAdLoadFailed: () => setState(() => _showBanner = false),
)

Interstitial Ad #

// Swift: @StateObject var interstitialVM = InterstitialViewModel()
final _vm = InterstitialAdManager();

@override
void initState() {
  super.initState();
  _vm.onAdLoadComplete = () => print('Ad loaded!');
  _vm.onAdDismissed   = () => Navigator.pushNamed(context, '/home');
  _vm.loadAd('ca-app-pub-XXXX/XXXX');
}

// Show immediately
_vm.showAd();

// Show after N clicks (bottom nav, general buttons)
_vm.onClickEvent('ca-app-pub-XXXX/XXXX', threshold: 3);

@override
void dispose() {
  _vm.dispose();
  super.dispose();
}

App Open Ad #

// Swift: @StateObject var appOpenVM = AppOpenAdManager()
final _appOpenVM = AppOpenAdManager();

@override
void initState() {
  super.initState();
  _appOpenVM.onAdDismissed = () => widget.onFinish();
  _appOpenVM.loadAd('ca-app-pub-XXXX/XXXX').then((_) {
    _appOpenVM.showAdIfAvailable('ca-app-pub-XXXX/XXXX');
  });
}

@override
void dispose() {
  _appOpenVM.dispose();
  super.dispose();
}

Prevent on paywall โ€” same as Swift:

@override
void initState() {
  super.initState();
  AppOpenAdManager.isInProScreen = true; // onAppear
}

@override
void dispose() {
  AppOpenAdManager.isInProScreen = false; // onDisappear
  super.dispose();
}

Rewarded Ad #

// Swift: @StateObject var rewardedVM = RewardedViewModel()
final _rewardedVM = RewardedAdManager();

@override
void initState() {
  super.initState();
  _rewardedVM.onAdDismissed = () { };
  _rewardedVM.onCoinsEarned = (coins) => print('Coins: $coins');
  _rewardedVM.loadAd('ca-app-pub-XXXX/XXXX');
}

// Show only when ready
ElevatedButton(
  onPressed: _rewardedVM.isAdReady ? () => _rewardedVM.showAd() : null,
  child: const Text('Watch Ad'),
)

// Listen to coins โ€” Swift: .onChange(of: rewardedVM.coins)
ListenableBuilder(
  listenable: _rewardedVM,
  builder: (_, __) => Text('Coins: ${_rewardedVM.coins}'),
)

Rewarded Interstitial Ad #

// Swift: @StateObject var riVM = RewardedInterstitialViewModel()
final _riVM = RewardedInterstitialAdManager();

@override
void initState() {
  super.initState();
  _riVM.onAdDismissed = () { };
  _riVM.onCoinsEarned = (coins) => print('Coins: $coins');
  _riVM.loadAd('ca-app-pub-XXXX/XXXX');
}

_riVM.showAd();

Native Ad #

// Swift: @StateObject var nativeVM = NativeAdViewModel(adUnitID: "...")
final _nativeVM = NativeAdManager(adUnitId: 'ca-app-pub-XXXX/XXXX');

@override
void initState() {
  super.initState();
  _nativeVM.refreshAd(); // Swift: nativeVM.refreshAd()
}

// In build โ€” Swift: GoogleNativeAdView(nativeViewModel: nativeVM)
ListenableBuilder(
  listenable: _nativeVM,
  builder: (_, __) => NativeAdWidget(manager: _nativeVM, height: 300),
)

@override
void dispose() {
  _nativeVM.dispose();
  super.dispose();
}

๐Ÿ“Š Swift โ†’ Flutter API #

Swift Flutter
@StateObject var vm = InterstitialViewModel() final vm = InterstitialAdManager()
vm.onAdLoadComplete = { } vm.onAdLoadComplete = () { }
vm.onAdDismissed = { } vm.onAdDismissed = () { }
await vm.loadAd(adUnitID: "...") await vm.loadAd('...')
vm.showAd() vm.showAd()
AppOpenAdManager.isInProScreen = true AppOpenAdManager.isInProScreen = true
.onChange(of: vm.coins) ListenableBuilder(listenable: vm, ...)
nativeVM.refreshAd() nativeVM.refreshAd()

๐Ÿงช Test Ad Unit IDs #

Format Test ID
App Open ca-app-pub-3940256099942544/9257395921
Interstitial ca-app-pub-3940256099942544/1033173712
Banner ca-app-pub-3940256099942544/6300978111
Native ca-app-pub-3940256099942544/2247696110
Rewarded ca-app-pub-3940256099942544/5224354917
Rewarded Interstitial ca-app-pub-3940256099942544/6978759866

๐Ÿ“„ License #

MIT ยฉ Ameerhamza-tech

Flutter port of shahid0/AdMobKit by Shahid Hussain.

1
likes
0
points
288
downloads

Publisher

unverified uploader

Weekly Downloads

AdMob library for Flutter with Banner, Interstitial, Rewarded, App Open, and Native ads support.

Repository (GitHub)
View/report issues

Topics

#admob #ads #monetization #interstitial #rewarded

License

unknown (license)

Dependencies

flutter, google_mobile_ads

More

Packages that depend on flutter_admob_kit