ironsource 0.1.1 ironsource: ^0.1.1 copied to clipboard
plugin to display banner ad (platform view), interstitial ad, rewarded video ad, and offerwall ads from IronSource (https://ironsrc.com). Currently support android only
import 'package:flutter/material.dart';
import 'package:ironsource/ironsource.dart';
import 'package:ironsource/models.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> with IronSourceListener , WidgetsBindingObserver{
final String appKey = "85460dcd";
bool rewardeVideoAvailable = false,
offerwallAvailable = false,
showBanner = false,
interstitialReady = false;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
init();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch(state){
case AppLifecycleState.resumed:
IronSource.activityResumed();
break;
case AppLifecycleState.inactive:
// TODO: Handle this case.
break;
case AppLifecycleState.paused:
// TODO: Handle this case.
IronSource.activityPaused();
break;
case AppLifecycleState.suspending:
// TODO: Handle this case.
break;
}
}
void init() async {
var userId = await IronSource.getAdvertiserId();
await IronSource.validateIntegration();
await IronSource.setUserId(userId);
await IronSource.initialize(appKey: appKey, listener: this);
rewardeVideoAvailable = await IronSource.isRewardedVideoAvailable();
offerwallAvailable = await IronSource.isOfferwallAvailable();
setState(() {});
}
void loadInterstitial() {
IronSource.loadInterstitial();
}
void showInterstitial() async {
if (await IronSource.isInterstitialReady()) {
IronSource.showInterstitial();
} else {
print(
"Interstial is not ready. use 'Ironsource.loadInterstial' before showing it",
);
}
}
void showOfferwall() async {
if (await IronSource.isOfferwallAvailable()) {
IronSource.showOfferwall();
} else {
print("Offerwall not available");
}
}
void showRewardedVideo() async {
if (await IronSource.isRewardedVideoAvailable()) {
IronSource.showRewardedVideol();
} else {
print("RewardedVideo not available");
}
}
void showHideBanner() {
setState(() {
showBanner = !showBanner;
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
centerTitle: true,
title: const Text('IronSource ads demo'),
),
body: Stack(
children: <Widget>[
Container(
padding: EdgeInsets.symmetric(vertical: 50.0),
alignment: Alignment.center,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
CustomButton(
label: "Load interstitial",
onPressed: loadInterstitial,
),
CustomButton(
label: "Show interstitial",
onPressed: interstitialReady ? showInterstitial : null,
),
CustomButton(
label: "Show offerwall",
onPressed: offerwallAvailable ? showOfferwall : null,
),
CustomButton(
label: "Show Rewarded Video",
onPressed: rewardeVideoAvailable ? showRewardedVideo : null,
),
CustomButton(
label: showBanner ? "hide banner" : "Show Banner",
onPressed: showHideBanner,
),
],
),
),
// Banner ad
showBanner?
Align(
alignment: Alignment.bottomCenter,
child: IronSourceBannerAd(
keepAlive: true, listener: BannerAdListener()),
):SizedBox()
],
),
),
);
}
@override
void onInterstitialAdClicked() {
print("onInterstitialAdClicked");
}
@override
void onInterstitialAdClosed() {
print("onInterstitialAdClosed");
}
@override
void onInterstitialAdLoadFailed(IronSourceError error) {
print("onInterstitialAdLoadFailed : ${error.toString()}");
}
@override
void onInterstitialAdOpened() {
print("onInterstitialAdOpened");
setState(() {
interstitialReady = false;
});
}
@override
void onInterstitialAdReady() {
print("onInterstitialAdReady");
setState(() {
interstitialReady = true;
});
}
@override
void onInterstitialAdShowFailed(IronSourceError error) {
print("onInterstitialAdShowFailed : ${error.toString()}");
setState(() {
interstitialReady = false;
});
}
@override
void onInterstitialAdShowSucceeded() {
print("nInterstitialAdShowSucceeded");
}
@override
void onGetOfferwallCreditsFailed(IronSourceError error) {
print("onGetOfferwallCreditsFailed : ${error.toString()}");
}
@override
void onOfferwallAdCredited(OfferwallCredit reward) {
print("onOfferwallAdCredited : $reward");
}
@override
void onOfferwallAvailable(bool available) {
print("onOfferwallAvailable : $available");
setState(() {
offerwallAvailable = available;
});
}
@override
void onOfferwallClosed() {
print("onOfferwallClosed");
}
@override
void onOfferwallOpened() {
print("onOfferwallOpened");
}
@override
void onOfferwallShowFailed(IronSourceError error) {
print("onOfferwallShowFailed ${error.toString()}");
}
@override
void onRewardedVideoAdClicked(Placement placement) {
print("onRewardedVideoAdClicked");
}
@override
void onRewardedVideoAdClosed() {
print("onRewardedVideoAdClosed");
}
@override
void onRewardedVideoAdEnded() {
print("onRewardedVideoAdEnded");
}
@override
void onRewardedVideoAdOpened() {
print("onRewardedVideoAdOpened");
}
@override
void onRewardedVideoAdRewarded(Placement placement) {
print("onRewardedVideoAdRewarded: ${placement.placementName}");
}
@override
void onRewardedVideoAdShowFailed(IronSourceError error) {
print("onRewardedVideoAdShowFailed : ${error.toString()}");
}
@override
void onRewardedVideoAdStarted() {
print("onRewardedVideoAdStarted");
}
@override
void onRewardedVideoAvailabilityChanged(bool available) {
print("onRewardedVideoAvailabilityChanged : $available");
setState(() {
rewardeVideoAvailable = available;
});
}
}
class BannerAdListener extends IronSourceBannerListener {
@override
void onBannerAdClicked() {
print("onBannerAdClicked");
}
@override
void onBannerAdLeftApplication() {
print("onBannerAdLeftApplication");
}
@override
void onBannerAdLoadFailed(Map<String, dynamic> error) {
print("onBannerAdLoadFailed");
}
@override
void onBannerAdLoaded() {
print("onBannerAdLoaded");
}
@override
void onBannerAdScreenDismissed() {
print("onBannerAdScreenDismisse");
}
@override
void onBannerAdScreenPresented() {
print("onBannerAdScreenPresented");
}
}
class CustomButton extends StatelessWidget {
final String label;
final Function onPressed;
const CustomButton({Key key, this.label, this.onPressed}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.symmetric(vertical: 10.0),
child: MaterialButton(
minWidth: 250.0,
height: 50.0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(40.0),
side: BorderSide(width: 2.0, color: Colors.blue)),
child: Text(
label.toUpperCase(),
style: TextStyle(),
),
onPressed: onPressed,
),
);
}
}