74 lines
1.7 KiB
Dart
74 lines
1.7 KiB
Dart
|
import 'dart:io';
|
||
|
|
||
|
import 'package:ebroker/exports/main_export.dart';
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:google_mobile_ads/google_mobile_ads.dart';
|
||
|
|
||
|
class BannerAdWidget extends StatefulWidget {
|
||
|
final AdSize bannerSize;
|
||
|
|
||
|
const BannerAdWidget({Key? key, this.bannerSize = AdSize.largeBanner})
|
||
|
: super(key: key);
|
||
|
|
||
|
@override
|
||
|
State<BannerAdWidget> createState() => _BannerAdWidgetState();
|
||
|
}
|
||
|
|
||
|
class _BannerAdWidgetState extends State<BannerAdWidget> {
|
||
|
BannerAd? _bannerAd;
|
||
|
late String adUnitId;
|
||
|
|
||
|
/// Loads a banner ad.
|
||
|
void loadAd() {
|
||
|
if (Constant.isAdmobAdsEnabled == false) {
|
||
|
return;
|
||
|
}
|
||
|
_bannerAd = BannerAd(
|
||
|
adUnitId: adUnitId,
|
||
|
request: const AdRequest(),
|
||
|
size: widget.bannerSize,
|
||
|
listener: BannerAdListener(
|
||
|
onAdLoaded: (ad) {
|
||
|
debugPrint('$ad loaded.');
|
||
|
setState(() {});
|
||
|
},
|
||
|
// Called when an ad request failed.
|
||
|
onAdFailedToLoad: (ad, err) {
|
||
|
_bannerAd = null;
|
||
|
setState(() {});
|
||
|
|
||
|
ad.dispose();
|
||
|
},
|
||
|
),
|
||
|
)..load();
|
||
|
}
|
||
|
|
||
|
@override
|
||
|
void initState() {
|
||
|
adUnitId = Platform.isAndroid
|
||
|
? Constant.admobBannerAndroid
|
||
|
: Constant.admobBannerIos;
|
||
|
loadAd();
|
||
|
super.initState();
|
||
|
}
|
||
|
|
||
|
@override
|
||
|
void dispose() {
|
||
|
if (_bannerAd != null) {
|
||
|
_bannerAd!.dispose();
|
||
|
}
|
||
|
super.dispose();
|
||
|
}
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
return (_bannerAd != null)
|
||
|
? SizedBox(
|
||
|
width: _bannerAd!.size.width.toDouble(),
|
||
|
height: _bannerAd!.size.height.toDouble(),
|
||
|
child: AdWidget(ad: _bannerAd!),
|
||
|
)
|
||
|
: const SizedBox.shrink();
|
||
|
}
|
||
|
}
|