add ad services and Docker configuration for web app
Some checks failed
Build Android App / build (push) Has been cancelled
Some checks failed
Build Android App / build (push) Has been cancelled
This commit is contained in:
75
lib/widgets/ad_banner.dart
Normal file
75
lib/widgets/ad_banner.dart
Normal file
@@ -0,0 +1,75 @@
|
||||
import "package:flutter/foundation.dart" show kIsWeb;
|
||||
import "package:flutter/widgets.dart";
|
||||
import "package:shadcn_flutter/shadcn_flutter.dart";
|
||||
import "../services/ad_service.dart";
|
||||
import "../services/admob_service.dart";
|
||||
import "../services/adsense_service.dart";
|
||||
|
||||
class AdBanner extends StatefulWidget {
|
||||
const AdBanner({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<AdBanner> createState() => _AdBannerState();
|
||||
}
|
||||
|
||||
class _AdBannerState extends State<AdBanner> {
|
||||
late AdService _adService;
|
||||
bool _isLoading = true;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_initializeAds();
|
||||
}
|
||||
|
||||
Future<void> _initializeAds() async {
|
||||
// Platform detection
|
||||
if (kIsWeb) {
|
||||
_adService = AdSenseService();
|
||||
} else {
|
||||
_adService = AdMobService();
|
||||
}
|
||||
|
||||
try {
|
||||
await _adService.initialize();
|
||||
await _adService.loadBannerAd();
|
||||
} catch (e) {
|
||||
print("Error initializng ads: $e");
|
||||
} finally {
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
_isLoading = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_adService.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (_isLoading) {
|
||||
return SizedBox(
|
||||
height: 50,
|
||||
child: Center(
|
||||
child: SizedBox(
|
||||
width: 20,
|
||||
height: 20,
|
||||
child: CircularProgressIndicator(strokeWidth: 2),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
if (!_adService.isLoaded) {
|
||||
// Ad failed to load, show nothing
|
||||
return SizedBox.shrink();
|
||||
}
|
||||
|
||||
return _adService.getBannerWidget();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user