feature/publicite #37
@ -2,37 +2,26 @@ import 'package:google_mobile_ads/google_mobile_ads.dart';
|
|||||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||||
|
|
||||||
class AdHelper {
|
class AdHelper {
|
||||||
static BannerAd? bannerAd;
|
static Future<BannerAd> createBannerAd(Function setStateCallback) async {
|
||||||
static bool isBannerAdLoaded = false;
|
|
||||||
|
|
||||||
static Future<void> loadBannerAd(Function setStateCallback) async {
|
|
||||||
await dotenv.load(fileName: ".env");
|
await dotenv.load(fileName: ".env");
|
||||||
final adUnitId = dotenv.env['AD_UNIT_ID'] ?? '';
|
final adUnitId = dotenv.env['AD_UNIT_ID'] ?? '';
|
||||||
|
|
||||||
bannerAd = BannerAd(
|
BannerAd bannerAd = BannerAd(
|
||||||
adUnitId: adUnitId, // Replace with actual ID
|
adUnitId: adUnitId,
|
||||||
size: AdSize.banner,
|
size: AdSize.banner,
|
||||||
request: AdRequest(),
|
request: AdRequest(),
|
||||||
listener: BannerAdListener(
|
listener: BannerAdListener(
|
||||||
onAdLoaded: (ad) {
|
onAdLoaded: (ad) {
|
||||||
setStateCallback(() {
|
setStateCallback(() {});
|
||||||
isBannerAdLoaded = true;
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
onAdFailedToLoad: (ad, error) {
|
onAdFailedToLoad: (ad, error) {
|
||||||
print('Banner Ad failed to load: $error');
|
print('Banner Ad failed to load: $error');
|
||||||
isBannerAdLoaded = false;
|
|
||||||
ad.dispose();
|
ad.dispose();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
bannerAd?.load();
|
bannerAd.load();
|
||||||
}
|
return bannerAd;
|
||||||
|
|
||||||
static void disposeAd() {
|
|
||||||
bannerAd?.dispose();
|
|
||||||
bannerAd = null;
|
|
||||||
isBannerAdLoaded = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'classes/ad_helper.dart';
|
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
|
||||||
|
import 'classes/ad_helper.dart';
|
||||||
import 'package:google_mobile_ads/google_mobile_ads.dart';
|
import 'package:google_mobile_ads/google_mobile_ads.dart';
|
||||||
|
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
@ -39,6 +39,7 @@ class LoginDemo extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _LoginDemoState extends State<LoginDemo> with ShowAlertDialog {
|
class _LoginDemoState extends State<LoginDemo> with ShowAlertDialog {
|
||||||
|
BannerAd? _bannerAd;
|
||||||
TextEditingController inputPseudo = TextEditingController();
|
TextEditingController inputPseudo = TextEditingController();
|
||||||
TextEditingController inputPassword = TextEditingController();
|
TextEditingController inputPassword = TextEditingController();
|
||||||
Future<void> _login(BuildContext context) async {
|
Future<void> _login(BuildContext context) async {
|
||||||
@ -134,18 +135,16 @@ class _LoginDemoState extends State<LoginDemo> with ShowAlertDialog {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
AdHelper.loadBannerAd(setState);
|
AdHelper.createBannerAd(() => setState(() {})).then((ad) {
|
||||||
|
setState(() {
|
||||||
|
_bannerAd = ad;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
_checkLocationPermission();
|
_checkLocationPermission();
|
||||||
start();
|
start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
void dispose() {
|
|
||||||
AdHelper.disposeAd(); // Dispose of ad when the widget is removed
|
|
||||||
super.dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> _checkLocationPermission() async {
|
Future<void> _checkLocationPermission() async {
|
||||||
PermissionStatus status = await Permission.location.status;
|
PermissionStatus status = await Permission.location.status;
|
||||||
|
|
||||||
@ -196,6 +195,13 @@ class _LoginDemoState extends State<LoginDemo> with ShowAlertDialog {
|
|||||||
body: SingleChildScrollView(
|
body: SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
|
_bannerAd == null
|
||||||
|
? SizedBox.shrink()
|
||||||
|
: SizedBox(
|
||||||
|
height: _bannerAd!.size.height.toDouble(),
|
||||||
|
width: _bannerAd!.size.width.toDouble(),
|
||||||
|
child: AdWidget(ad: _bannerAd!),
|
||||||
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(top: 60.0),
|
padding: const EdgeInsets.only(top: 60.0),
|
||||||
child: Center(
|
child: Center(
|
||||||
@ -266,12 +272,6 @@ class _LoginDemoState extends State<LoginDemo> with ShowAlertDialog {
|
|||||||
Navigator.push(
|
Navigator.push(
|
||||||
context, MaterialPageRoute(builder: (_) => AddProfile()));
|
context, MaterialPageRoute(builder: (_) => AddProfile()));
|
||||||
}),
|
}),
|
||||||
if (AdHelper.isBannerAdLoaded)
|
|
||||||
SizedBox(
|
|
||||||
height: AdHelper.bannerAd!.size.height.toDouble(),
|
|
||||||
width: AdHelper.bannerAd!.size.width.toDouble(),
|
|
||||||
child: AdWidget(ad: AdHelper.bannerAd!),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -16,7 +16,12 @@ import 'package:permission_handler/permission_handler.dart';
|
|||||||
import "Camera.dart";
|
import "Camera.dart";
|
||||||
import 'package:camera/camera.dart';
|
import 'package:camera/camera.dart';
|
||||||
|
|
||||||
void main() {
|
import '../classes/ad_helper.dart';
|
||||||
|
import 'package:google_mobile_ads/google_mobile_ads.dart';
|
||||||
|
|
||||||
|
void main() async {
|
||||||
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
|
await MobileAds.instance.initialize();
|
||||||
initializeDateFormatting("fr_FR", null).then((_) => runApp(const MyApp()));
|
initializeDateFormatting("fr_FR", null).then((_) => runApp(const MyApp()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,6 +45,8 @@ class ListItemMenu extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _MyHomePageState extends State<ListItemMenu> {
|
class _MyHomePageState extends State<ListItemMenu> {
|
||||||
|
BannerAd? _bannerAd;
|
||||||
|
|
||||||
Future<List<Events>> postsFuture = getPosts();
|
Future<List<Events>> postsFuture = getPosts();
|
||||||
List<Events> filteredPosts = [];
|
List<Events> filteredPosts = [];
|
||||||
String geographicalZone = '';
|
String geographicalZone = '';
|
||||||
@ -138,6 +145,11 @@ class _MyHomePageState extends State<ListItemMenu> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
AdHelper.createBannerAd(() => setState(() {})).then((ad) {
|
||||||
|
setState(() {
|
||||||
|
_bannerAd = ad;
|
||||||
|
});
|
||||||
|
});
|
||||||
// Initialize data fetch when the page loads
|
// Initialize data fetch when the page loads
|
||||||
_getCurrentLocation();
|
_getCurrentLocation();
|
||||||
}
|
}
|
||||||
@ -543,6 +555,13 @@ class _MyHomePageState extends State<ListItemMenu> {
|
|||||||
drawer: MyDrawer(),
|
drawer: MyDrawer(),
|
||||||
body: Column(
|
body: Column(
|
||||||
children: [
|
children: [
|
||||||
|
_bannerAd == null
|
||||||
|
? SizedBox.shrink()
|
||||||
|
: SizedBox(
|
||||||
|
height: _bannerAd!.size.height.toDouble(),
|
||||||
|
width: _bannerAd!.size.width.toDouble(),
|
||||||
|
child: AdWidget(ad: _bannerAd!),
|
||||||
|
),
|
||||||
if (showInputSearch)
|
if (showInputSearch)
|
||||||
_buildSearchField(
|
_buildSearchField(
|
||||||
controller: inputItem,
|
controller: inputItem,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user