pdavenue_ads_moentize 1.0.0
pdavenue_ads_moentize: ^1.0.0 copied to clipboard
A Flutter plugin bridging the native Android Ads Monetize SDK to display standard (interstitial/rewarded), video, app open, native, and banner ads.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:pdavenue_ads_moentize/pdavenue_ads_moentize.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Monetize SDK Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(
seedColor: const Color(0xFF6200EE),
brightness: Brightness.dark,
),
useMaterial3: true,
),
home: const AdsDemoHomeScreen(),
);
}
}
class AdsDemoHomeScreen extends StatefulWidget {
const AdsDemoHomeScreen({super.key});
@override
State<AdsDemoHomeScreen> createState() => _AdsDemoHomeScreenState();
}
class _AdsDemoHomeScreenState extends State<AdsDemoHomeScreen> {
bool _isSdkInitialized = false;
String _sdkStatus = "Not Initialized";
final TextEditingController _appIdController = TextEditingController(
text: "ca-app-pub-3940256099942544~3347511714",
);
bool _appOpenBlocked = false;
@override
void initState() {
super.initState();
_checkInitStatus();
}
Future<void> _checkInitStatus() async {
final init = await AdsSdk.isAdsInitialized();
setState(() {
_isSdkInitialized = init;
_sdkStatus = init ? "Initialized Successfully" : "Not Initialized";
});
}
Future<void> _initializeSdk() async {
setState(() {
_sdkStatus = "Initializing...";
});
try {
final result = await AdsSdk.adsInitialize(
appId: _appIdController.text,
isDebugOn: true,
);
setState(() {
_isSdkInitialized = true;
_sdkStatus = "Initialized: $result";
});
// Call initAds to pre-load priority ads
await AdsManager.initAds(isShowAds: "5", adsPriority: "1,2,3");
} catch (e) {
setState(() {
_isSdkInitialized = false;
_sdkStatus = "Error: $e";
});
}
}
void _triggerShowAd(String type) {
AdsManager.showAds(
isShowAds: type,
eventName: "TEST_INTER_CLICK",
);
}
Future<void> _triggerVideoAd(String type) async {
final shown = await AdsManager.showVideoAds(
isShowAds: type,
eventName: "TEST_VIDEO_CLICK",
);
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Video ad closed. Ad shown: $shown')),
);
}
@override
void dispose() {
_appIdController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Monetize SDK Demo'),
centerTitle: true,
),
body: SingleChildScrollView(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
// SDK Initialization Card
Card(
elevation: 4,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
"SDK Configuration",
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
const SizedBox(height: 12),
TextField(
controller: _appIdController,
decoration: const InputDecoration(
labelText: 'App ID',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 12),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text("Status:"),
Text(
_sdkStatus,
style: TextStyle(
fontWeight: FontWeight.bold,
color: _isSdkInitialized ? Colors.green : Colors.orange,
),
),
],
),
ElevatedButton(
onPressed: _initializeSdk,
child: const Text("Initialize Sdk"),
),
],
),
],
),
),
),
const SizedBox(height: 16),
// Ad Controls Card
Card(
elevation: 4,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
"Trigger Ads",
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
const SizedBox(height: 12),
const Text("Standard Ads (showAds)"),
const SizedBox(height: 8),
Row(
children: [
Expanded(
child: ElevatedButton(
onPressed: () => _triggerShowAd("1"),
child: const Text("Interstitial"),
),
),
const SizedBox(width: 8),
Expanded(
child: ElevatedButton(
onPressed: () => _triggerShowAd("2"),
child: const Text("Rewarded"),
),
),
],
),
const SizedBox(height: 8),
Row(
children: [
Expanded(
child: ElevatedButton(
onPressed: () => _triggerShowAd("3"),
child: const Text("Redirect"),
),
),
const SizedBox(width: 8),
Expanded(
child: ElevatedButton(
onPressed: () => _triggerShowAd("4"),
child: const Text("Full Native"),
),
),
],
),
const SizedBox(height: 16),
const Text("Video Ads (showVideoAds)"),
const SizedBox(height: 8),
Row(
children: [
Expanded(
child: ElevatedButton(
onPressed: () => _triggerVideoAd("1"),
child: const Text("Video Inter"),
),
),
const SizedBox(width: 8),
Expanded(
child: ElevatedButton(
onPressed: () => _triggerVideoAd("2"),
child: const Text("Video Reward"),
),
),
],
),
],
),
),
),
const SizedBox(height: 16),
// App Open Ad Controls Card
Card(
elevation: 4,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
"App Open Ads Control",
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
const SizedBox(height: 12),
SwitchListTile(
title: const Text('Block App Open Ads'),
subtitle: const Text('Prevent ad overlay on app resume'),
value: _appOpenBlocked,
onChanged: (bool value) {
setState(() {
_appOpenBlocked = value;
});
if (value) {
AdsManager.blockAppOpen();
} else {
AdsManager.allowAppOpen();
}
},
),
const SizedBox(height: 8),
Center(
child: ElevatedButton.icon(
onPressed: () => AdsManager.showAppOpen(),
icon: const Icon(Icons.open_in_new),
label: const Text("Force Show App Open Ad"),
),
),
],
),
),
),
const SizedBox(height: 16),
// Native Ad Layout Demo Card
Card(
elevation: 4,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
"Embedded Native Ad Widget",
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
const SizedBox(height: 12),
const SizedBox(
height: 320,
child: MonetizeNativeAd(
eventName: "DEMO_NATIVE_AD",
type: NativeAdsType.BIG,
),
),
],
),
),
),
const SizedBox(height: 16),
// Banner Ad Layout Demo Card
Card(
elevation: 4,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
"Embedded Banner Ad Widget",
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
const SizedBox(height: 12),
const SizedBox(
height: 60,
child: MonetizeBannerAd(
eventName: "DEMO_BANNER_AD",
bannerType: BannerType.ADAPTIVE,
),
),
],
),
),
),
],
),
),
);
}
}