google_admob_sdk 0.0.6 copy "google_admob_sdk: ^0.0.6" to clipboard
google_admob_sdk: ^0.0.6 copied to clipboard

A Flutter plugin for Google Mobile Ads (AdMob) with centralized Ad Unit ID management, load duration metrics, adKey tracking, and pre-built ad widgets & managers.

example/lib/main.dart

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Initialize Firebase if google-services.json / GoogleService-Info.plist is configured
  try {
    await Firebase.initializeApp();
  } catch (e) {
    debugPrint('Firebase not configured in example (skipping): $e');
  }

  // Initialize SDK with ID configurations and Firebase / Console loggers
  await GoogleAdmobSdk.initialize(
    config: const AdIdConfig(
      android: PlatformAdIds(
        bannerId: 'ca-app-pub-3940256099942544/6300978111',
        interstitialId: 'ca-app-pub-3940256099942544/1033173712',
        rewardedId: 'ca-app-pub-3940256099942544/5224354917',
        appOpenId: 'ca-app-pub-3940256099942544/9257395921',
      ),
      ios: PlatformAdIds(
        bannerId: 'ca-app-pub-3940256099942544/2934735716',
        interstitialId: 'ca-app-pub-3940256099942544/4411468910',
        rewardedId: 'ca-app-pub-3940256099942544/1712485313',
        appOpenId: 'ca-app-pub-3940256099942544/5608718254',
      ),
    ),
    logger: FirebaseAdLogger(),
    enableLogging: true,
    enableDeviceLog: true,
  );

  runApp(const MyApp());
}

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final _interstitialManager = InterstitialAdManager();
  final _rewardedManager = RewardedAdManager();
  final _appOpenManager = AppOpenAdManager();

  @override
  void initState() {
    super.initState();
    // Preload ads with custom placement keys (adKey) for logging
    _interstitialManager.loadAd(adKey: 'level_complete_interstitial');
    _rewardedManager.loadAd(adKey: 'extra_lives_rewarded');
    _appOpenManager.loadAd(adKey: 'app_launch_open_ad');
  }

  @override
  void dispose() {
    _interstitialManager.dispose();
    _rewardedManager.dispose();
    _appOpenManager.dispose();
    super.dispose();
  }

  void _showMessage(BuildContext context, String message) {
    ScaffoldMessenger.of(
      context,
    ).showSnackBar(SnackBar(content: Text(message)));
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Google AdMob SDK Demo'),
          centerTitle: true,
        ),
        body: Builder(
          builder: (context) {
            return Column(
              children: [
                Expanded(
                  child: SingleChildScrollView(
                    padding: const EdgeInsets.all(24.0),
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.stretch,
                      children: [
                        const Text(
                          'Ad Mobility Showcase',
                          textAlign: TextAlign.center,
                          style: TextStyle(
                            fontSize: 22,
                            fontWeight: FontWeight.bold,
                          ),
                        ),
                        const SizedBox(height: 8),
                        const Text(
                          'Demonstrates Banner, Interstitial, Rewarded, and App Open ads with adKey tracking.',
                          textAlign: TextAlign.center,
                          style: TextStyle(color: Colors.grey),
                        ),
                        const SizedBox(height: 32),

                        // App Open Ad Button
                        ElevatedButton.icon(
                          icon: const Icon(Icons.open_in_new),
                          label: const Text('Show App Open Ad'),
                          style: ElevatedButton.styleFrom(
                            padding: const EdgeInsets.symmetric(vertical: 14),
                          ),
                          onPressed: () async {
                            if (_appOpenManager.isAdAvailable) {
                              await _appOpenManager.showAdIfAvailable(
                                adKey: 'app_launch_open_ad',
                              );
                            } else {
                              _showMessage(
                                context,
                                'App Open Ad is loading...',
                              );
                              _appOpenManager.loadAd(
                                adKey: 'app_launch_open_ad',
                              );
                            }
                          },
                        ),
                        const SizedBox(height: 16),

                        // Interstitial Ad Button
                        ElevatedButton.icon(
                          icon: const Icon(Icons.fullscreen),
                          label: const Text('Show Interstitial Ad'),
                          style: ElevatedButton.styleFrom(
                            padding: const EdgeInsets.symmetric(vertical: 14),
                          ),
                          onPressed: () async {
                            if (_interstitialManager.isAdLoaded) {
                              await _interstitialManager.showAd(
                                adKey: 'level_complete_interstitial',
                                onAdDismissedFullScreenContent: () {
                                  _showMessage(
                                    context,
                                    'Interstitial Ad dismissed',
                                  );
                                },
                              );
                            } else {
                              _showMessage(
                                context,
                                'Interstitial Ad is loading...',
                              );
                              _interstitialManager.loadAd(
                                adKey: 'level_complete_interstitial',
                              );
                            }
                          },
                        ),
                        const SizedBox(height: 16),

                        // Rewarded Ad Button
                        ElevatedButton.icon(
                          icon: const Icon(Icons.card_giftcard),
                          label: const Text('Show Rewarded Ad'),
                          style: ElevatedButton.styleFrom(
                            padding: const EdgeInsets.symmetric(vertical: 14),
                          ),
                          onPressed: () async {
                            if (_rewardedManager.isAdLoaded) {
                              await _rewardedManager.showAd(
                                adKey: 'extra_lives_rewarded',
                                onUserEarnedReward: (ad, reward) {
                                  _showMessage(
                                    context,
                                    '🎉 Earned reward: ${reward.amount} ${reward.type}',
                                  );
                                },
                              );
                            } else {
                              _showMessage(
                                context,
                                'Rewarded Ad is loading...',
                              );
                              _rewardedManager.loadAd(
                                adKey: 'extra_lives_rewarded',
                              );
                            }
                          },
                        ),
                      ],
                    ),
                  ),
                ),

                // Pre-built BannerAdWidget with adKey
                SafeArea(
                  child: Container(
                    alignment: Alignment.center,
                    child: const BannerAdWidget(
                      adKey: 'home_bottom_banner',
                      adSize: AdSize.banner,
                    ),
                  ),
                ),
              ],
            );
          },
        ),
      ),
    );
  }
}
0
likes
160
points
241
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin for Google Mobile Ads (AdMob) with centralized Ad Unit ID management, load duration metrics, adKey tracking, and pre-built ad widgets & managers.

Repository (GitLab)

License

MIT (license)

Dependencies

firebase_analytics, firebase_core, flutter, google_mobile_ads

More

Packages that depend on google_admob_sdk

Packages that implement google_admob_sdk