BUG: MIH Ad Display Strategy

This commit is contained in:
2025-11-03 11:27:44 +02:00
parent 67692967c3
commit ba46f38497
9 changed files with 47 additions and 52 deletions

View File

@@ -12,10 +12,28 @@ class MihBannerAd extends StatefulWidget {
} }
class _MihBannerAdState extends State<MihBannerAd> { class _MihBannerAdState extends State<MihBannerAd> {
@override
void dispose() {
super.dispose();
}
@override
void initState() {
super.initState();
MihBannerAdProvider adProvider = context.read<MihBannerAdProvider>();
WidgetsBinding.instance.addPostFrameCallback((_) {
adProvider.reset();
adProvider.loadBannerAd();
});
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<MihBannerAdProvider>( return Consumer<MihBannerAdProvider>(
builder: (context, bannerAdProvider, child) { builder: (context, bannerAdProvider, child) {
if (!bannerAdProvider.isBannerAdLoaded) {
return SizedBox();
}
return Column( return Column(
children: [ children: [
bannerAdProvider.bannerAd != null && bannerAdProvider.bannerAd != null &&

View File

@@ -28,6 +28,11 @@ class MihBannerAdProvider extends ChangeNotifier {
} }
void loadBannerAd() { void loadBannerAd() {
if (bannerAd != null) {
bannerAd!.dispose();
bannerAd = null;
isBannerAdLoaded = false;
}
bannerAd = BannerAd( bannerAd = BannerAd(
adUnitId: adUnitId, adUnitId: adUnitId,
request: const AdRequest(), request: const AdRequest(),

View File

@@ -2,7 +2,6 @@ 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.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_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.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_components/mih_providers/mih_calculator_provider.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_calculator_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/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/simple_calc.dart';
@@ -29,7 +28,6 @@ class _MIHCalculatorState extends State<MIHCalculator> {
void initState() { void initState() {
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async { WidgetsBinding.instance.addPostFrameCallback((_) async {
context.read<MihBannerAdProvider>().loadBannerAd();
await getCurrencyCodeList(); await getCurrencyCodeList();
}); });
} }

View File

@@ -9,7 +9,6 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_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_package_components/mih_text_form_field.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_banner_ad_provider.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_calculator_provider.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_calculator_provider.dart';
import 'package:mzansi_innovation_hub/mih_config/mih_colors.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_alert_services.dart';
@@ -67,7 +66,6 @@ class _CurrencyExchangeRateState extends State<CurrencyExchangeRate> {
fullscreen: false, fullscreen: false,
windowTitle: "Calculation Results", windowTitle: "Calculation Results",
onWindowTapClose: () { onWindowTapClose: () {
context.read<MihBannerAdProvider>().loadBannerAd();
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: Column( windowBody: Column(

View File

@@ -1,6 +1,5 @@
import 'package:mzansi_innovation_hub/main.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_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_config/mih_colors.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart';
@@ -99,7 +98,6 @@ class _TipCalcState extends State<TipCalc> {
fullscreen: false, fullscreen: false,
windowTitle: "Calculation Results", windowTitle: "Calculation Results",
onWindowTapClose: () { onWindowTapClose: () {
context.read<MihBannerAdProvider>().loadBannerAd();
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: Column( windowBody: Column(

View File

@@ -13,7 +13,6 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.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_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.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/mih_mine_sweeper_provider.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_mine_sweeper_provider.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_profile_provider.dart';
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
@@ -124,8 +123,9 @@ class _MineSweeperGameState extends State<MineSweeperGame> {
return '$hoursStr:$minutesStr:$secondsStr:$centiStr'; return '$hoursStr:$minutesStr:$secondsStr:$centiStr';
} }
void showStartGameWindow(MihMineSweeperProvider mihMineSweeperProvider, void showStartGameWindow(
MihBannerAdProvider addProvider) { MihMineSweeperProvider mihMineSweeperProvider,
) {
// easy - 10 * 10 & 15 bombs // easy - 10 * 10 & 15 bombs
// Intermediate - 10 * 15 & 23 bombs // Intermediate - 10 * 15 & 23 bombs
// Hard - 10 * 20 & 30 bombs // Hard - 10 * 20 & 30 bombs
@@ -134,7 +134,6 @@ class _MineSweeperGameState extends State<MineSweeperGame> {
builder: (context) { builder: (context) {
return MihMineSweeperStartGameWindow( return MihMineSweeperStartGameWindow(
onPressed: () { onPressed: () {
addProvider.loadBannerAd();
resetTimer(); resetTimer();
mihMineSweeperProvider mihMineSweeperProvider
.setDifficulty(mihMineSweeperProvider.difficulty); .setDifficulty(mihMineSweeperProvider.difficulty);
@@ -241,12 +240,8 @@ class _MineSweeperGameState extends State<MineSweeperGame> {
} }
} }
Future<void> handleTap( Future<void> handleTap(MzansiProfileProvider profileProvider,
MzansiProfileProvider profileProvider, MihMineSweeperProvider mihMineSweeperProvider, int r, int c) async {
MihMineSweeperProvider mihMineSweeperProvider,
MihBannerAdProvider adProvider,
int r,
int c) async {
if (isGameOver || board[r][c].isOpened || board[r][c].isFlagged) { if (isGameOver || board[r][c].isOpened || board[r][c].isFlagged) {
return; return;
} }
@@ -304,8 +299,7 @@ class _MineSweeperGameState extends State<MineSweeperGame> {
MihButton( MihButton(
onPressed: () { onPressed: () {
context.pop(); context.pop();
showStartGameWindow( showStartGameWindow(mihMineSweeperProvider);
mihMineSweeperProvider, adProvider);
}, },
buttonColor: MihColors.getGreenColor( buttonColor: MihColors.getGreenColor(
MzansiInnovationHub.of(context)!.theme.mode == MzansiInnovationHub.of(context)!.theme.mode ==
@@ -364,7 +358,7 @@ class _MineSweeperGameState extends State<MineSweeperGame> {
squaresLeft--; squaresLeft--;
} }
// 3. Check for win // 3. Check for win
_checkWinCondition(profileProvider, mihMineSweeperProvider, adProvider); _checkWinCondition(profileProvider, mihMineSweeperProvider);
// Update the UI // Update the UI
setState(() {}); setState(() {});
} }
@@ -383,7 +377,6 @@ class _MineSweeperGameState extends State<MineSweeperGame> {
Future<void> _checkWinCondition( Future<void> _checkWinCondition(
MzansiProfileProvider profileProvider, MzansiProfileProvider profileProvider,
MihMineSweeperProvider mihMineSweeperProvider, MihMineSweeperProvider mihMineSweeperProvider,
MihBannerAdProvider adProvider,
) async { ) async {
// Game is won if all non-mine squares are opened. // Game is won if all non-mine squares are opened.
if (squaresLeft <= mihMineSweeperProvider.totalMines) { if (squaresLeft <= mihMineSweeperProvider.totalMines) {
@@ -450,7 +443,7 @@ class _MineSweeperGameState extends State<MineSweeperGame> {
MihButton( MihButton(
onPressed: () { onPressed: () {
context.pop(); context.pop();
showStartGameWindow(mihMineSweeperProvider, adProvider); showStartGameWindow(mihMineSweeperProvider);
}, },
buttonColor: MihColors.getGreenColor( buttonColor: MihColors.getGreenColor(
MzansiInnovationHub.of(context)!.theme.mode == MzansiInnovationHub.of(context)!.theme.mode ==
@@ -558,13 +551,9 @@ class _MineSweeperGameState extends State<MineSweeperGame> {
} }
Widget getBody() { Widget getBody() {
return Consumer3<MzansiProfileProvider, MihMineSweeperProvider, return Consumer2<MzansiProfileProvider, MihMineSweeperProvider>(
MihBannerAdProvider>( builder: (BuildContext context, MzansiProfileProvider profileProvider,
builder: (BuildContext context, MihMineSweeperProvider mihMineSweeperProvider, Widget? child) {
MzansiProfileProvider profileProvider,
MihMineSweeperProvider mihMineSweeperProvider,
MihBannerAdProvider adProvider,
Widget? child) {
return Column( return Column(
children: [ children: [
Expanded( Expanded(
@@ -725,12 +714,8 @@ class _MineSweeperGameState extends State<MineSweeperGame> {
return MineTile( return MineTile(
square: board[r][c], square: board[r][c],
onTap: () => handleTap( onTap: () => handleTap(profileProvider,
profileProvider, mihMineSweeperProvider, r, c),
mihMineSweeperProvider,
adProvider,
r,
c),
onLongPress: () => handleLongPress(r, c), onLongPress: () => handleLongPress(r, c),
); );
}, },
@@ -794,8 +779,7 @@ class _MineSweeperGameState extends State<MineSweeperGame> {
MzansiInnovationHub.of(context)!.theme.mode == MzansiInnovationHub.of(context)!.theme.mode ==
"Dark"), "Dark"),
onTap: () { onTap: () {
showStartGameWindow( showStartGameWindow(mihMineSweeperProvider);
mihMineSweeperProvider, adProvider);
}, },
), ),
]), ]),

View File

@@ -6,7 +6,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_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_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_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_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_profile_provider.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_wallet_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_config/mih_colors.dart';
@@ -522,7 +521,6 @@ class _BuildLoyaltyCardListState extends State<BuildLoyaltyCardList> {
), ),
], ],
onWindowTapClose: () { onWindowTapClose: () {
context.read<MihBannerAdProvider>().loadBannerAd();
resetScreenBrightness(); resetScreenBrightness();
context.pop(); context.pop();
}, },
@@ -584,9 +582,7 @@ class _BuildLoyaltyCardListState extends State<BuildLoyaltyCardList> {
), ),
), ),
SizedBox(height: 10), SizedBox(height: 10),
Consumer(builder: (context, bannerAdDisplay, child) { MihBannerAd()
return MihBannerAd();
}),
// MihBannerAd(), // MihBannerAd(),
], ],
), ),

View File

@@ -3,7 +3,6 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_
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_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.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_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_profile_provider.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_wallet_provider.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_wallet_provider.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -50,7 +49,6 @@ class _MihWalletState extends State<MihWallet> {
context.read<MzansiWalletProvider>(); context.read<MzansiWalletProvider>();
await setLoyaltyCards(mzansiProfileProvider, walletProvider); await setLoyaltyCards(mzansiProfileProvider, walletProvider);
await setFavouritesCards(mzansiProfileProvider, walletProvider); await setFavouritesCards(mzansiProfileProvider, walletProvider);
context.read<MihBannerAdProvider>().loadBannerAd();
setState(() { setState(() {
isLoading = false; isLoading = false;
}); });

View File

@@ -34,6 +34,8 @@ class _MihCardsState extends State<MihCards> {
detectionSpeed: DetectionSpeed.unrestricted, detectionSpeed: DetectionSpeed.unrestricted,
); );
final boxFit = BoxFit.contain; final boxFit = BoxFit.contain;
late MzansiWalletProvider _walletProvider;
late VoidCallback _searchListener;
void searchShop(List<MIHLoyaltyCard> allCards) { void searchShop(List<MIHLoyaltyCard> allCards) {
if (cardSearchController.text.isEmpty) { if (cardSearchController.text.isEmpty) {
@@ -129,10 +131,7 @@ class _MihCardsState extends State<MihCards> {
@override @override
void dispose() { void dispose() {
final walletProvider = context.read<MzansiWalletProvider>(); cardSearchController.removeListener(_searchListener);
cardSearchController.removeListener(() {
searchShop(walletProvider.loyaltyCards);
});
cardSearchController.dispose(); cardSearchController.dispose();
searchShopName.dispose(); searchShopName.dispose();
searchFocusNode.dispose(); searchFocusNode.dispose();
@@ -141,11 +140,12 @@ class _MihCardsState extends State<MihCards> {
@override @override
void initState() { void initState() {
final walletProvider = context.read<MzansiWalletProvider>(); _walletProvider = context.read<MzansiWalletProvider>();
searchShopName.value = walletProvider.loyaltyCards; _searchListener = () {
cardSearchController.addListener(() { searchShop(_walletProvider.loyaltyCards);
searchShop(walletProvider.loyaltyCards); };
}); searchShopName.value = _walletProvider.loyaltyCards;
cardSearchController.addListener(_searchListener);
super.initState(); super.initState();
} }