san_wrapper 0.0.1 copy "san_wrapper: ^0.0.1" to clipboard
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),
    );
  }
}
0
likes
110
points
1
downloads

Publisher

unverified uploader

Weekly Downloads

Lacuna SDK Plugin

Homepage

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter, visibility_detector

More

Packages that depend on san_wrapper

Packages that implement san_wrapper