From 5135629b332b2534d7cd3ed1cb3d443ad662f2a4 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Wed, 25 Feb 2026 12:05:07 +0200 Subject: [PATCH] fix platform specific code not working on web --- mih_ui/lib/mih_config/mih_env.dart | 10 +++++++++- .../Example/package_tools/package_tool_one.dart | 4 +++- mih_ui/lib/mih_package_components/mih_package.dart | 3 ++- .../package_tools/currency_exchange_rate.dart | 3 ++- .../calculator/package_tools/tip_calc.dart | 2 +- .../mine_sweeper/package_tools/mine_sweeper_game.dart | 3 ++- .../mzansi_ai/package_tools/mih_ai_chat.dart | 8 ++++---- .../mzansi_wallet/builder/build_loyalty_card_list.dart | 2 +- mih_ui/lib/mih_providers/mih_banner_ad_provider.dart | 2 +- mih_ui/lib/mih_services/mih_alert_services.dart | 3 ++- mih_ui/lib/mih_services/mih_location_services.dart | 3 ++- 11 files changed, 29 insertions(+), 14 deletions(-) diff --git a/mih_ui/lib/mih_config/mih_env.dart b/mih_ui/lib/mih_config/mih_env.dart index 9af57766..168e33a0 100644 --- a/mih_ui/lib/mih_config/mih_env.dart +++ b/mih_ui/lib/mih_config/mih_env.dart @@ -20,7 +20,15 @@ abstract class AppEnviroment { switch (env) { case Enviroment.dev: { - if (kIsWeb || Platform.isIOS || Platform.isLinux) { + if (kIsWeb) { + //================= Web Dev Urls ================= + baseAppUrl = "http://localhost:80"; + baseApiUrl = "http://localhost:8080"; + baseFileUrl = "http://localhost:9000"; + baseAiUrl = "http://localhost:11434"; + bannerAdUnitId = 'ca-app-pub-3940256099942544/2435281174'; // IOS ID + break; + } else if (Platform.isIOS || Platform.isLinux) { //================= Web Dev Urls ================= baseAppUrl = "http://localhost:80"; baseApiUrl = "http://localhost:8080"; diff --git a/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_one.dart b/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_one.dart index 95de0348..33ab49a1 100644 --- a/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_one.dart +++ b/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_one.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:country_code_picker/country_code_picker.dart'; import 'package:file_picker/file_picker.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:geolocator/geolocator.dart'; @@ -453,7 +454,8 @@ class _PackageToolOneState extends State { ), ], ), - if (Platform.isAndroid || Platform.isIOS) MihBannerAd(), + if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) + MihBannerAd(), const SizedBox(height: 10), Divider( color: MihColors.getSecondaryColor( diff --git a/mih_ui/lib/mih_package_components/mih_package.dart b/mih_ui/lib/mih_package_components/mih_package.dart index f387f5c7..7fad0387 100644 --- a/mih_ui/lib/mih_package_components/mih_package.dart +++ b/mih_ui/lib/mih_package_components/mih_package.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; @@ -101,7 +102,7 @@ class _MihPackageState extends State // _peakAnimation(); // }); // } - if (Platform.isAndroid || Platform.isIOS) { + if (!kIsWeb && Platform.isAndroid || Platform.isIOS) { // Trigger the peak animation only AFTER the route transition is complete WidgetsBinding.instance.addPostFrameCallback((_) { final ModalRoute? currentRoute = ModalRoute.of(context); diff --git a/mih_ui/lib/mih_packages/calculator/package_tools/currency_exchange_rate.dart b/mih_ui/lib/mih_packages/calculator/package_tools/currency_exchange_rate.dart index 794765ff..6ae8bbb7 100644 --- a/mih_ui/lib/mih_packages/calculator/package_tools/currency_exchange_rate.dart +++ b/mih_ui/lib/mih_packages/calculator/package_tools/currency_exchange_rate.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:mzansi_innovation_hub/main.dart'; @@ -159,7 +160,7 @@ class _CurrencyExchangeRateState extends State { ), SizedBox(height: 10), Consumer(builder: (context, bannerAdDisplay, child) { - if (Platform.isAndroid || Platform.isIOS) { + if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) { return MihBannerAd(); } else { return const SizedBox(height: 0); diff --git a/mih_ui/lib/mih_packages/calculator/package_tools/tip_calc.dart b/mih_ui/lib/mih_packages/calculator/package_tools/tip_calc.dart index 72ed50a6..35bca56a 100644 --- a/mih_ui/lib/mih_packages/calculator/package_tools/tip_calc.dart +++ b/mih_ui/lib/mih_packages/calculator/package_tools/tip_calc.dart @@ -231,7 +231,7 @@ class _TipCalcState extends State { ), SizedBox(height: 10), Consumer(builder: (context, bannerAdDisplay, child) { - if (Platform.isAndroid || Platform.isIOS) { + if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) { return MihBannerAd(); } else { return const SizedBox(height: 0); diff --git a/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mine_sweeper_game.dart b/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mine_sweeper_game.dart index f400c98b..78ea28b9 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mine_sweeper_game.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mine_sweeper_game.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io'; import 'dart:math'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -852,7 +853,7 @@ class _MineSweeperGameState extends State { ], ), ), - _timer != null && (Platform.isAndroid || Platform.isIOS) + _timer != null && !kIsWeb && (Platform.isAndroid || Platform.isIOS) ? MihBannerAd() : SizedBox(), SizedBox(height: 15), diff --git a/mih_ui/lib/mih_packages/mzansi_ai/package_tools/mih_ai_chat.dart b/mih_ui/lib/mih_packages/mzansi_ai/package_tools/mih_ai_chat.dart index 2ec0671e..7cb268fc 100644 --- a/mih_ui/lib/mih_packages/mzansi_ai/package_tools/mih_ai_chat.dart +++ b/mih_ui/lib/mih_packages/mzansi_ai/package_tools/mih_ai_chat.dart @@ -129,7 +129,7 @@ class _MihAiChatState extends State with WidgetsBindingObserver { } if (textToSpeak != null) { - if (Platform.isLinux) { + if (!kIsWeb && Platform.isLinux) { // Linux Workaround: Use Speech Dispatcher (standard on most distros) // '-t female1' is optional for voice variety Process.run('spd-say', [textToSpeak]); @@ -204,7 +204,7 @@ class _MihAiChatState extends State with WidgetsBindingObserver { // } void stopTTS(MzansiAiProvider aiProvider) { - if (Platform.isLinux) { + if (!kIsWeb && Platform.isLinux) { Process.run('spd-say', ['-S']); // The -S flag stops current speech } else { _flutterTts.stop(); @@ -213,7 +213,7 @@ class _MihAiChatState extends State with WidgetsBindingObserver { } Future initTts(MzansiAiProvider aiProvider) async { - if (Platform.isLinux) return; + if (!kIsWeb && Platform.isLinux) return; try { await _flutterTts.setSpeechRate(!kIsWeb ? 0.55 : 1); // await _flutterTts.setLanguage("en-US"); @@ -284,7 +284,7 @@ class _MihAiChatState extends State with WidgetsBindingObserver { @override void dispose() { - if (!Platform.isLinux) { + if (!kIsWeb && !Platform.isLinux) { _flutterTts.stop(); } WidgetsBinding.instance.removeObserver(this); diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart b/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart index be1cde25..b75bb179 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart @@ -547,7 +547,7 @@ class _BuildLoyaltyCardListState extends State { ), ), SizedBox(height: 10), - if (Platform.isAndroid || Platform.isIOS) MihBannerAd() + if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) MihBannerAd() // MihBannerAd(), ], ), diff --git a/mih_ui/lib/mih_providers/mih_banner_ad_provider.dart b/mih_ui/lib/mih_providers/mih_banner_ad_provider.dart index e37594db..729092ee 100644 --- a/mih_ui/lib/mih_providers/mih_banner_ad_provider.dart +++ b/mih_ui/lib/mih_providers/mih_banner_ad_provider.dart @@ -30,7 +30,7 @@ class MihBannerAdProvider extends ChangeNotifier { } void loadBannerAd() { - if (Platform.isAndroid || Platform.isIOS) { + if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) { if (bannerAd != null) { bannerAd!.dispose(); bannerAd = null; diff --git a/mih_ui/lib/mih_services/mih_alert_services.dart b/mih_ui/lib/mih_services/mih_alert_services.dart index c2e4e721..f00481ec 100644 --- a/mih_ui/lib/mih_services/mih_alert_services.dart +++ b/mih_ui/lib/mih_services/mih_alert_services.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:mzansi_innovation_hub/main.dart'; @@ -136,7 +137,7 @@ class MihAlertServices { ), const SizedBox(height: 15), Text( - Platform.isLinux + !kIsWeb && Platform.isLinux ? "To get the most out of MIH, we need your location. Please go to your System Settings and enable location services. Once you do that, we can start showing you relevant information based on your location." : "To get the most out of MIH, we need your location. Please go to the site settings of the app and enable location services. Once you do that, we can start showing you relevant information based on your location.", style: TextStyle( diff --git a/mih_ui/lib/mih_services/mih_location_services.dart b/mih_ui/lib/mih_services/mih_location_services.dart index a18d745c..4e939419 100644 --- a/mih_ui/lib/mih_services/mih_location_services.dart +++ b/mih_ui/lib/mih_services/mih_location_services.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; @@ -16,7 +17,7 @@ class MIHLocationAPI { ///if user has granted permission (while in use), function will return Position object. Future getGPSPosition(BuildContext context) async { bool serviceEnabled = await Geolocator.isLocationServiceEnabled(); - if (!serviceEnabled && Platform.isLinux) { + if (!serviceEnabled && !kIsWeb && Platform.isLinux) { // Direct the user to their System Settings MihAlertServices().locationPermissionAlert(context); return null;