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:
80
lib/services/adsense_service_web.dart
Normal file
80
lib/services/adsense_service_web.dart
Normal file
@@ -0,0 +1,80 @@
|
||||
import "dart:ui_web" as ui_web;
|
||||
import "dart:js" as js;
|
||||
import "package:flutter/widgets.dart";
|
||||
import "package:universal_html/html.dart" as html;
|
||||
import "ad_service.dart";
|
||||
|
||||
/// Web implementation of AdSense service
|
||||
class AdSenseService implements AdService {
|
||||
bool _isLoaded = false;
|
||||
static const String _adSlotId = "XXXXXXXXXX"; // Replace with your ad slot ID
|
||||
|
||||
@override
|
||||
Future<void> initialize() async {
|
||||
// AdSense is loaded via script tag in index.html
|
||||
print("AdSense initialized (web)");
|
||||
_isLoaded = true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> loadBannerAd() async {
|
||||
// AdSense ads are loaded automatically when widget renders
|
||||
_isLoaded = true;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget getBannerWidget() {
|
||||
final viewType = "adsense-banner-${DateTime.now().millisecondsSinceEpoch}";
|
||||
|
||||
// Register the view factory
|
||||
// ignore: undefined_prefixed_name
|
||||
ui_web.platformViewRegistry.registerViewFactory(
|
||||
viewType,
|
||||
(int viewId) => _createAdElement(),
|
||||
);
|
||||
|
||||
return SizedBox(
|
||||
height: 90,
|
||||
child: HtmlElementView(viewType: viewType),
|
||||
);
|
||||
}
|
||||
|
||||
html.Element _createAdElement() {
|
||||
// Create AdSense div
|
||||
final adContainer = html.DivElement()
|
||||
..style.width = "100%"
|
||||
..style.height = "90px"
|
||||
..style.textAlign = "center";
|
||||
|
||||
final adElement = html.Element.html("""
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-XXXXXXXXXXXXXXXX"
|
||||
data-ad-slot="$_adSlotId"
|
||||
data-ad-format="auto"
|
||||
data-full-width-responsive="true"></ins>
|
||||
""");
|
||||
|
||||
adContainer.append(adElement);
|
||||
|
||||
// Push ad using dart:js instead of eval
|
||||
try {
|
||||
final adsbygoogle = js.context["adsbygoogle"];
|
||||
if (adsbygoogle != null) {
|
||||
adsbygoogle.callMethod("push", [js.JsObject.jsify({})]);
|
||||
}
|
||||
} catch (e) {
|
||||
print("Error pushing AdSense ad: $e");
|
||||
}
|
||||
|
||||
return adContainer;
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_isLoaded = false;
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isLoaded => _isLoaded;
|
||||
}
|
||||
Reference in New Issue
Block a user