NEW: MIH Banner Ads Provider Set Up
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_banner_ad_provider.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_wallet_provider.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
@@ -73,6 +74,9 @@ class _MzansiInnovationHubState extends State<MzansiInnovationHub> {
|
||||
ChangeNotifierProvider(
|
||||
create: (context) => MzansiWalletProvider(),
|
||||
),
|
||||
ChangeNotifierProvider(
|
||||
create: (context) => MihBannerAdProvider(),
|
||||
),
|
||||
],
|
||||
child: MaterialApp.router(
|
||||
title: getTitle(),
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_mobile_ads/google_mobile_ads.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_banner_ad_provider.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_config/mih_env.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class MihBannerAd extends StatefulWidget {
|
||||
const MihBannerAd({super.key});
|
||||
@@ -10,66 +12,26 @@ class MihBannerAd extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _MihBannerAdState extends State<MihBannerAd> {
|
||||
BannerAd? _bannerAd;
|
||||
bool _isBannerAdLoaded = false;
|
||||
final adUnitId = AppEnviroment.bannerAdUnitId;
|
||||
String errorMessage = '';
|
||||
|
||||
void _loadBannerAd() {
|
||||
_bannerAd = BannerAd(
|
||||
adUnitId: adUnitId,
|
||||
request: const AdRequest(),
|
||||
size: AdSize.banner,
|
||||
listener: BannerAdListener(
|
||||
onAdLoaded: (ad) {
|
||||
debugPrint('$ad loaded.');
|
||||
setState(() {
|
||||
_isBannerAdLoaded = true;
|
||||
});
|
||||
},
|
||||
onAdFailedToLoad: (ad, err) {
|
||||
debugPrint('BannerAd failed to load: $err');
|
||||
setState(() {
|
||||
errorMessage =
|
||||
'Failed to load ad- Message: ${err.message} Code :${err.code}';
|
||||
});
|
||||
ad.dispose(); // Dispose the ad to free resources
|
||||
},
|
||||
onAdOpened: (Ad ad) => debugPrint('$ad opened.'),
|
||||
onAdClosed: (Ad ad) => debugPrint('$ad closed.'),
|
||||
onAdImpression: (Ad ad) => debugPrint('$ad impression.'),
|
||||
),
|
||||
);
|
||||
|
||||
_bannerAd!.load();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_bannerAd?.dispose(); // Dispose the ad when the widget is removed
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_loadBannerAd();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Column(
|
||||
children: [
|
||||
_bannerAd != null && _isBannerAdLoaded
|
||||
? SizedBox(
|
||||
width: _bannerAd!.size.width.toDouble(),
|
||||
height: _bannerAd!.size.height.toDouble(),
|
||||
child: AdWidget(ad: _bannerAd!))
|
||||
: SizedBox(
|
||||
child:
|
||||
Text(AppEnviroment.getEnv() == "Dev" ? errorMessage : ""),
|
||||
),
|
||||
],
|
||||
return Consumer<MihBannerAdProvider>(
|
||||
builder: (context, bannerAdProvider, child) {
|
||||
return Column(
|
||||
children: [
|
||||
bannerAdProvider.bannerAd != null &&
|
||||
bannerAdProvider.isBannerAdLoaded
|
||||
? SizedBox(
|
||||
width: bannerAdProvider.bannerAd!.size.width.toDouble(),
|
||||
height: bannerAdProvider.bannerAd!.size.height.toDouble(),
|
||||
child: AdWidget(ad: bannerAdProvider.bannerAd!))
|
||||
: SizedBox(
|
||||
child: Text(AppEnviroment.getEnv() == "Dev"
|
||||
? bannerAdProvider.errorMessage
|
||||
: ""),
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:google_mobile_ads/google_mobile_ads.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_config/mih_env.dart';
|
||||
|
||||
class MihBannerAdProvider extends ChangeNotifier {
|
||||
BannerAd? bannerAd;
|
||||
final adUnitId = AppEnviroment.bannerAdUnitId;
|
||||
bool isBannerAdLoaded = false;
|
||||
String errorMessage = '';
|
||||
|
||||
MihBannerAdProvider({
|
||||
this.bannerAd,
|
||||
this.isBannerAdLoaded = false,
|
||||
this.errorMessage = '',
|
||||
});
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
bannerAd?.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
void loadBannerAd() {
|
||||
bannerAd = BannerAd(
|
||||
adUnitId: adUnitId,
|
||||
request: const AdRequest(),
|
||||
size: AdSize.banner,
|
||||
listener: BannerAdListener(
|
||||
onAdLoaded: (ad) {
|
||||
debugPrint('$ad loaded.');
|
||||
isBannerAdLoaded = true;
|
||||
notifyListeners();
|
||||
},
|
||||
onAdFailedToLoad: (ad, err) {
|
||||
debugPrint('BannerAd failed to load: $err');
|
||||
errorMessage =
|
||||
'Failed to load ad- Message: ${err.message} Code :${err.code}';
|
||||
ad.dispose(); // Dispose the ad to free resources
|
||||
isBannerAdLoaded = false; // ⬅️ Explicitly set to false
|
||||
bannerAd = null; // ⬅️ Explicitly set to null
|
||||
notifyListeners();
|
||||
},
|
||||
onAdOpened: (Ad ad) => debugPrint('$ad opened.'),
|
||||
onAdClosed: (Ad ad) => debugPrint('$ad closed.'),
|
||||
onAdImpression: (Ad ad) => debugPrint('$ad impression.'),
|
||||
),
|
||||
);
|
||||
bannerAd!.load();
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,12 @@ import 'package:go_router/go_router.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_banner_ad_provider.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_packages/calculator/package_tools/currency_exchange_rate.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_packages/calculator/package_tools/simple_calc.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_packages/calculator/package_tools/tip_calc.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class MIHCalculator extends StatefulWidget {
|
||||
final bool personalSelected;
|
||||
@@ -21,6 +23,14 @@ class MIHCalculator extends StatefulWidget {
|
||||
class _MIHCalculatorState extends State<MIHCalculator> {
|
||||
int _selectedIndex = 0;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||
context.read<MihBannerAdProvider>().loadBannerAd();
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MihPackage(
|
||||
|
||||
@@ -10,10 +10,12 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_single_child_scroll.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_text_form_field.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_banner_ad_provider.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_currency_exchange_rate_services.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CurrencyExchangeRate extends StatefulWidget {
|
||||
const CurrencyExchangeRate({super.key});
|
||||
@@ -29,7 +31,6 @@ class _CurrencyExchangeRateState extends State<CurrencyExchangeRate> {
|
||||
final TextEditingController _fromAmountController = TextEditingController();
|
||||
final TextEditingController _toAmountController = TextEditingController();
|
||||
late Future<List<String>> availableCurrencies;
|
||||
MihBannerAd _bannerAd = MihBannerAd();
|
||||
|
||||
Future<void> submitForm() async {
|
||||
String fromCurrencyCode = _fromCurrencyController.text.split(" - ")[0];
|
||||
@@ -67,9 +68,7 @@ class _CurrencyExchangeRateState extends State<CurrencyExchangeRate> {
|
||||
fullscreen: false,
|
||||
windowTitle: "Calculation Results",
|
||||
onWindowTapClose: () {
|
||||
setState(() {
|
||||
_bannerAd = MihBannerAd();
|
||||
});
|
||||
context.read<MihBannerAdProvider>().loadBannerAd();
|
||||
Navigator.pop(context);
|
||||
},
|
||||
windowBody: Column(
|
||||
@@ -160,7 +159,9 @@ class _CurrencyExchangeRateState extends State<CurrencyExchangeRate> {
|
||||
],
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
SizedBox(child: _bannerAd),
|
||||
Consumer(builder: (context, bannerAdDisplay, child) {
|
||||
return MihBannerAd();
|
||||
}),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:mzansi_innovation_hub/main.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_banner_ad.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_banner_ad_provider.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart';
|
||||
@@ -14,6 +15,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:math_expressions/math_expressions.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_toggle.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class TipCalc extends StatefulWidget {
|
||||
const TipCalc({super.key});
|
||||
@@ -30,7 +32,6 @@ class _TipCalcState extends State<TipCalc> {
|
||||
final ValueNotifier<String> splitValue = ValueNotifier("");
|
||||
late bool splitPosition;
|
||||
final _formKey = GlobalKey<FormState>();
|
||||
MihBannerAd _bannerAd = MihBannerAd();
|
||||
String tip = "";
|
||||
String total = "";
|
||||
String amountPerPerson = "";
|
||||
@@ -98,9 +99,7 @@ class _TipCalcState extends State<TipCalc> {
|
||||
fullscreen: false,
|
||||
windowTitle: "Calculation Results",
|
||||
onWindowTapClose: () {
|
||||
setState(() {
|
||||
_bannerAd = MihBannerAd();
|
||||
});
|
||||
context.read<MihBannerAdProvider>().loadBannerAd();
|
||||
Navigator.pop(context);
|
||||
},
|
||||
windowBody: Column(
|
||||
@@ -231,7 +230,9 @@ class _TipCalcState extends State<TipCalc> {
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
SizedBox(child: _bannerAd),
|
||||
Consumer(builder: (context, bannerAdDisplay, child) {
|
||||
return MihBannerAd();
|
||||
}),
|
||||
// if (splitBillController.text == "Yes") const Divider(),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:mzansi_innovation_hub/main.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_banner_ad.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_error_message.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_banner_ad_provider.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_wallet_provider.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
|
||||
@@ -29,10 +30,8 @@ class BuildLoyaltyCardList extends StatefulWidget {
|
||||
final AppUser signedInUser;
|
||||
final List<MIHLoyaltyCard> cardList;
|
||||
final int navIndex;
|
||||
final MihBannerAd? bannerAd;
|
||||
final bool favouritesMode;
|
||||
final TextEditingController searchText;
|
||||
final void Function()? onCardViewClose;
|
||||
|
||||
const BuildLoyaltyCardList({
|
||||
super.key,
|
||||
@@ -41,8 +40,6 @@ class BuildLoyaltyCardList extends StatefulWidget {
|
||||
required this.navIndex,
|
||||
required this.favouritesMode,
|
||||
required this.searchText,
|
||||
this.bannerAd,
|
||||
this.onCardViewClose,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -487,7 +484,7 @@ class _BuildLoyaltyCardListState extends State<BuildLoyaltyCardList> {
|
||||
),
|
||||
],
|
||||
onWindowTapClose: () {
|
||||
widget.onCardViewClose;
|
||||
context.read<MihBannerAdProvider>().loadBannerAd();
|
||||
resetScreenBrightness();
|
||||
context.pop();
|
||||
},
|
||||
@@ -549,7 +546,9 @@ class _BuildLoyaltyCardListState extends State<BuildLoyaltyCardList> {
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
widget.bannerAd ?? SizedBox(),
|
||||
Consumer(builder: (context, bannerAdDisplay, child) {
|
||||
return MihBannerAd();
|
||||
}),
|
||||
// MihBannerAd(),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_banner_ad_provider.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_wallet_provider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/package_tools/mih_card_favourites.dart';
|
||||
@@ -48,6 +49,7 @@ class _MihWalletState extends State<MihWallet> {
|
||||
setPackageIndex();
|
||||
await setLoyaltyCards();
|
||||
await setFavouritesCards();
|
||||
context.read<MihBannerAdProvider>().loadBannerAd();
|
||||
setState(() {
|
||||
isLoading = false;
|
||||
});
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_banner_ad.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_wallet_provider.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_single_child_scroll.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart';
|
||||
@@ -21,7 +20,6 @@ class MihCardFavourites extends StatefulWidget {
|
||||
|
||||
class _MihCardFavouritesState extends State<MihCardFavourites> {
|
||||
late Future<List<MIHLoyaltyCard>> cardList;
|
||||
late MihBannerAd _bannerAd;
|
||||
List<MIHLoyaltyCard> listOfCards = [];
|
||||
|
||||
void getFavouriteLoyaltyCards(BuildContext context) async {
|
||||
@@ -32,7 +30,6 @@ class _MihCardFavouritesState extends State<MihCardFavourites> {
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_bannerAd = MihBannerAd();
|
||||
getFavouriteLoyaltyCards(context);
|
||||
super.initState();
|
||||
}
|
||||
@@ -55,15 +52,8 @@ class _MihCardFavouritesState extends State<MihCardFavourites> {
|
||||
cardList: listOfCards,
|
||||
signedInUser: widget.signedInUser,
|
||||
navIndex: 0,
|
||||
bannerAd: _bannerAd,
|
||||
favouritesMode: true,
|
||||
searchText: TextEditingController(),
|
||||
onCardViewClose: () {
|
||||
setState(() {
|
||||
_bannerAd = MihBannerAd();
|
||||
});
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:mzansi_innovation_hub/main.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_banner_ad.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_wallet_provider.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
|
||||
@@ -33,7 +32,6 @@ class MihCards extends StatefulWidget {
|
||||
class _MihCardsState extends State<MihCards> {
|
||||
final TextEditingController cardSearchController = TextEditingController();
|
||||
final FocusNode searchFocusNode = FocusNode();
|
||||
MihBannerAd _bannerAd = MihBannerAd();
|
||||
List<MIHLoyaltyCard> listOfCards = [];
|
||||
final ValueNotifier<List<MIHLoyaltyCard>> searchShopName = ValueNotifier([]);
|
||||
final MobileScannerController scannerController = MobileScannerController(
|
||||
@@ -202,15 +200,8 @@ class _MihCardsState extends State<MihCards> {
|
||||
cardList: filteredCards, //listOfCards,
|
||||
signedInUser: widget.signedInUser,
|
||||
navIndex: 0,
|
||||
bannerAd: _bannerAd,
|
||||
favouritesMode: false,
|
||||
searchText: cardSearchController,
|
||||
onCardViewClose: () {
|
||||
setState(() {
|
||||
_bannerAd = MihBannerAd();
|
||||
});
|
||||
// Navigator.pop(context);
|
||||
},
|
||||
);
|
||||
});
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user