admob_ads_manager 1.0.1
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,
),
],
),
);
}
}