import "package:flutter/foundation.dart"; import "package:flutter/widgets.dart"; import "package:google_mobile_ads/google_mobile_ads.dart"; import "ad_service.dart"; class AdMobService implements AdService { BannerAd? _bannerAd; bool _isLoaded = false; // Ad unit IDs static const String _androidBannerAdUnitId = "ca-app-pub-5177609929140951/8415596856"; static const String _iosBannerAdUnitId = "ca-app-pub-5177609929140951/7102515188"; String get _bannerAdUnitId { if (defaultTargetPlatform == TargetPlatform.android) { return _androidBannerAdUnitId; } else if (defaultTargetPlatform == TargetPlatform.iOS) { return _iosBannerAdUnitId; } else { throw UnsupportedError("Platform not supported"); } } @override Future initialize() async { await MobileAds.instance.initialize(); print("AdMob initialized"); } @override Future loadBannerAd() async { _bannerAd = BannerAd( adUnitId: _bannerAdUnitId, size: AdSize.banner, request: const AdRequest(), listener: BannerAdListener( onAdLoaded: (ad) { print("Banner ad loaded"); _isLoaded = true; }, onAdFailedToLoad: (ad, error) { print("Banner ad failed to load: $error"); ad.dispose(); _isLoaded = false; }, ), ); await _bannerAd!.load(); } @override Widget getBannerWidget() { if (_bannerAd == null || !_isLoaded) { return SizedBox.shrink(); } return SizedBox( height: 50, child: AdWidget(ad: _bannerAd!), ); } @override void dispose() { _bannerAd?.dispose(); _bannerAd = null; _isLoaded = false; } @override bool get isLoaded => _isLoaded; }