san_wrapper 0.0.1
san_wrapper: ^0.0.1 copied to clipboard
Lacuna SDK Plugin
example/lib/main.dart
// ignore_for_file: prefer_const_constructors
import 'dart:async';
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:san_wrapper/lacuna_ad.dart';
import 'package:san_wrapper/lacuna_ad_listener.dart';
import 'package:san_wrapper/lacuna_widget.dart';
import 'package:san_wrapper/lacuna_bridge.dart';
const String banner_pid_50 = '2053';
const String reward_pid = '2054';
const String interstitial_pid = '2055';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
LacunaBanner? _lacunaBanner;
LacunaInterstitial? _lacunaInterstitial;
LacunaRewarded? _lacunaRewarded;
Widget? _bannerWidget;
bool bannerLoaded = false;
bool rewardLoaded = false;
@override
void initState() {
super.initState();
testInit();
}
Future<void> testInit() async {
try {
await LacunaSDK.init();
} on PlatformException {
log('init error');
}
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
_lacunaBanner = LacunaBanner(
placeId: banner_pid_50,
adLoadListener: AdLoadListener(
onAdLoaded: () => {bannerLoaded = true, log('on banner loaded')},
onAdLoadError: (err) => {
bannerLoaded = false,
_lacunaBanner?.dispose(),
log('load banner error: $err')
},
),
adActionListener: AdActionListener(
onAdClicked: () => {log('on banner clicked')},
onAdImpression: () => {log('on banner impression')},
onAdImpressionError: (err) => {log('on banner impression error: $err')},
onAdCompleted: () => {log('on banner completed')},
onAdClosed: (hasRewarded) => {log('on banner close')},
),
);
_lacunaInterstitial = LacunaInterstitial(
placeId: interstitial_pid,
adLoadListener: AdLoadListener(
onAdLoaded: () => {log('on interstitial loaded')},
onAdLoadError: (err) => {
_lacunaInterstitial?.dispose(),
log('load interstitial error: $err')
},
),
adActionListener: AdActionListener(
onAdClicked: () => {log('on interstitial clicked')},
onAdImpression: () => {log('on interstitial impression')},
onAdImpressionError: (err) => {log('on interstitial impression error: $err')},
onAdCompleted: () => {log('on interstitial completed')},
onAdClosed: (hasRewarded) => {log('on interstitial close')},
),
);
_lacunaRewarded = LacunaRewarded(
placeId: reward_pid,
adLoadListener: AdLoadListener(
onAdLoaded: () => {
rewardLoaded = true,
log('on reward loaded')
},
onAdLoadError: (err) => {
rewardLoaded = false,
_lacunaRewarded?.dispose(),
log('load reward error: $err')
},
),
adActionListener: AdActionListener(
onAdClicked: () => {log('on reward clicked')},
onAdImpression: () => {log('on reward impression')},
onAdImpressionError: (err) => {log('on reward impression error: $err')},
onAdCompleted: () => {log('on reward completed')},
onAdClosed: (hasRewarded) => {log('on reward close, hasRewarded: $hasRewarded')},
)
);
}
@override
void dispose() {
super.dispose();
_lacunaBanner?.dispose();
_lacunaInterstitial?.dispose();
_lacunaRewarded?.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('SAN Flutter sample'),
),
body: SingleChildScrollView(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_getFeatureBtn("click to change status of GDPR now its on", () {}),
Text("FullScreen Ad"),
Row(
children: [
_getFeatureBtn("Request Interstitial Ad", () {
_lacunaInterstitial!.load();
}),
_getFeatureBtn("Show Ad", () {
_lacunaInterstitial!.show();
}),
],
),
Row(
children: [
_getFeatureBtn("Request Banner Ad", () {
_lacunaBanner?.load();
}),
_getFeatureBtn("Show Ad", () {
_showBanner();
}),
],
),
Container(
constraints: BoxConstraints.expand(height: 60),
child: _bannerWidget,
),
Row(
children: [
_getFeatureBtn("Request Reward Ad", () {
_lacunaRewarded?.load();
}),
_getFeatureBtn("Show Ad", () {
_lacunaRewarded?.show();
}),
],
),
],
),
)),
),
);
}
void _showBanner() {
if (!bannerLoaded || _lacunaBanner == null) {
log('banner not ready!');
return;
}
setState(() {
_bannerWidget = AdWidget(ad: _lacunaBanner!);
});
}
Widget _getFeatureBtn(String text, VoidCallback onPressed) {
return ElevatedButton(
onPressed: onPressed,
child: Text(text),
);
}
}