admob_ads_manager 1.0.1 copy "admob_ads_manager: ^1.0.1" to clipboard
admob_ads_manager: ^1.0.1 copied to clipboard

A simplified Flutter package for AdMob ads integration with support for Banner, Native, Interstitial, Rewarded, and AppOpen ads.

example/lib/main.dart

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

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

  await AdsManager.init(
    adIds: AdIds(
      androidBanner: "ca-app-pub-3940256099942544/6300978111",
      iosBanner: "ca-app-pub-3940256099942544/2934735716",
      androidInterstitial: "ca-app-pub-3940256099942544/1033173712",
      iosInterstitial: "ca-app-pub-3940256099942544/4411468910",
      androidRewarded: "ca-app-pub-3940256099942544/5224354917",
      iosRewarded: "ca-app-pub-3940256099942544/1712485313",
      androidNative: "ca-app-pub-3940256099942544/2247696110",
      iosNative: "ca-app-pub-3940256099942544/3986624511",
      androidAppOpen: "ca-app-pub-3940256099942544/9257395921",
      iosAppOpen: "ca-app-pub-3940256099942544/5575463023",
    ),
    isTestMode: true,
    enableLogging: true,
  );

  // Enable automatic AppOpen ads when app comes to foreground
  // minIntervalSeconds: 0 means show on every app resume (default)
  // Set to higher value (e.g., 3600 for 1 hour) to limit frequency
  AdsManager.enableAutoAppOpen(minIntervalSeconds: 0);

  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'AdMob Ads Manager Demo',
      theme: ThemeData(primarySwatch: Colors.blue, useMaterial3: true),
      home: const HomeScreen(),
    );
  }
}

class HomeScreen extends StatelessWidget {
  const HomeScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('AdMob Ads Manager Demo'),
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
      ),
      body: Column(
        children: [
          Expanded(
            child: ListView(
              padding: const EdgeInsets.all(16),
              children: [
                const Text(
                  'Ad Types Demo',
                  style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
                ),
                const SizedBox(height: 16),

                // Auto AppOpen Ad Toggle
                Card(
                  child: SwitchListTile(
                    title: const Text('Auto AppOpen Ads'),
                    subtitle: const Text(
                      'Show AppOpen ad when app comes to foreground',
                    ),
                    value: AdsManager.isAutoAppOpenEnabled,
                    onChanged: (value) {
                      if (value) {
                        AdsManager.enableAutoAppOpen(minIntervalSeconds: 0);
                        ScaffoldMessenger.of(context).showSnackBar(
                          const SnackBar(
                            content: Text('Auto AppOpen ads enabled'),
                          ),
                        );
                      } else {
                        AdsManager.disableAutoAppOpen();
                        ScaffoldMessenger.of(context).showSnackBar(
                          const SnackBar(
                            content: Text('Auto AppOpen ads disabled'),
                          ),
                        );
                      }
                    },
                  ),
                ),
                const SizedBox(height: 24),

                // Interstitial Ad Button
                ElevatedButton.icon(
                  onPressed: () async {
                    await AdsManager.showInterstitial(
                      onLoad: () => debugPrint('Interstitial loaded'),
                      onError: (error) =>
                          debugPrint('Interstitial error: $error'),
                      onDismiss: () => debugPrint('Interstitial dismissed'),
                    );
                  },
                  icon: const Icon(Icons.fullscreen),
                  label: const Text('Show Interstitial Ad'),
                  style: ElevatedButton.styleFrom(
                    padding: const EdgeInsets.all(16),
                  ),
                ),
                const SizedBox(height: 16),

                // Rewarded Ad Button
                ElevatedButton.icon(
                  onPressed: () async {
                    await AdsManager.showRewarded(
                      onLoad: () => debugPrint('Rewarded ad loaded'),
                      onError: (error) => debugPrint('Rewarded error: $error'),
                      onEarnReward: (reward) {
                        debugPrint('Earned ${reward.amount} ${reward.type}');
                        ScaffoldMessenger.of(context).showSnackBar(
                          SnackBar(
                            content: Text(
                              'Earned ${reward.amount} ${reward.type}!',
                            ),
                          ),
                        );
                      },
                      onDismiss: () => debugPrint('Rewarded ad dismissed'),
                    );
                  },
                  icon: const Icon(Icons.card_giftcard),
                  label: const Text('Show Rewarded Ad'),
                  style: ElevatedButton.styleFrom(
                    padding: const EdgeInsets.all(16),
                  ),
                ),
                const SizedBox(height: 16),

                // AppOpen Ad Button
                ElevatedButton.icon(
                  onPressed: () async {
                    await AdsManager.showAppOpen(
                      onLoad: () => debugPrint('AppOpen ad loaded'),
                      onError: (error) => debugPrint('AppOpen error: $error'),
                      onDismiss: () => debugPrint('AppOpen ad dismissed'),
                    );
                  },
                  icon: const Icon(Icons.open_in_new),
                  label: const Text('Show AppOpen Ad'),
                  style: ElevatedButton.styleFrom(
                    padding: const EdgeInsets.all(16),
                  ),
                ),
                const SizedBox(height: 32),

                // Native Ad - Card Style
                const Text(
                  'Native Ad (Card Style)',
                  style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
                ),
                const SizedBox(height: 8),
                NativeAdWidget(
                  height: 250,
                  style: NativeAdStyle.card,
                  onLoad: () => debugPrint('Native ad loaded'),
                  onError: (error) => debugPrint('Native ad error: $error'),
                  backgroundColor: Colors.white,
                  callToActionBackgroundColor: Colors.blue,
                ),
                const SizedBox(height: 32),

                // Native Ad - Minimal Style
                const Text(
                  'Native Ad (Minimal Style)',
                  style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
                ),
                const SizedBox(height: 8),
                NativeAdWidget(
                  height: 120,
                  style: NativeAdStyle.minimal,
                  backgroundColor: Colors.grey[100],
                ),
              ],
            ),
          ),

          // Banner Ad at Bottom
          const BannerAdWidget(
            adSize: AdSize.banner,
            alignment: Alignment.bottomCenter,
            backgroundColor: Colors.white,
          ),
        ],
      ),
    );
  }
}
0
likes
140
points
65
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A simplified Flutter package for AdMob ads integration with support for Banner, Native, Interstitial, Rewarded, and AppOpen ads.

Repository (GitHub)

License

MIT (license)

Dependencies

flutter, google_mobile_ads

More

Packages that depend on admob_ads_manager