import 'package:firebase_app_check/firebase_app_check.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:nhance_app_pwa/pages/email_verify.dart'; import 'package:nhance_app_pwa/pages/enrollment/addons.dart'; import 'package:nhance_app_pwa/pages/enrollment/empDetails.dart'; import 'package:nhance_app_pwa/pages/enrollment/empReview.dart'; import 'package:nhance_app_pwa/pages/login.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/botman_widget.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/chatbot.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/claimprocess.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/claims.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/generalexclusionsdeductibles.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/help.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/home.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/planclaimsform.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/policies.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/privacypolicy.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/profile.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/raisedTicketList.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/termsofuse.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/tickets.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/tickettracklist.dart'; import 'package:nhance_app_pwa/pages/postEnrollment/wellness.dart'; import 'package:nhance_app_pwa/pages/session/SetPinBiometric.dart'; import 'package:nhance_app_pwa/pages/session/changePin.dart'; import 'package:nhance_app_pwa/pages/session/settingUpPinAndBiometric.dart'; import 'package:nhance_app_pwa/pages/verify.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'models/environment.dart'; import 'package:flutter/foundation.dart'; // import 'dart:html' as html; void clearLocalStorageOnAppStart() async { if (kIsWeb) { // Clear localStorage every time the app starts // html.window.localStorage.clear(); final SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.clear(); } } Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async { await Firebase.initializeApp(); print("Handling background message: ${message.messageId}"); } Future main() async { // clearLocalStorageOnAppStart(); // html.window.onBeforeUnload.listen((event) { // html.window.localStorage.clear(); // ✅ Clears local storage // }); WidgetsFlutterBinding.ensureInitialized(); // final SharedPreferences prefs = await SharedPreferences.getInstance(); // prefs.clear(); if (kIsWeb) { await Firebase.initializeApp( options: const FirebaseOptions( // apiKey: 'AIzaSyC4yHbCX4mQu0jO81pJrDwxKLQlTQWofrc', // appId: '1:1084115316849:android:68b14c4ff37f4bbc6c6bd0', // messagingSenderId: '1084115316849', // projectId: 'nhance-ee8d1' apiKey: "AIzaSyC4yHbCX4mQu0jO81pJrDwxKLQlTQWofrc", authDomain: "nhance-ee8d1.firebaseapp.com", projectId: "nhance-ee8d1", storageBucket: "nhance-ee8d1.firebasestorage.app", messagingSenderId: "1084115316849", appId: "1:1084115316849:web:8fc3b1c886349ae86c6bd0")); } else { await Firebase.initializeApp(); await FirebaseAppCheck.instance.activate( // webProvider: ReCaptchaV3Provider('recaptcha-v3-site-key'), androidProvider: AndroidProvider.playIntegrity, appleProvider: AppleProvider.appAttest, ); FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); FirebaseMessaging messaging = FirebaseMessaging.instance; // NotificationSettings settings = await messaging.requestPermission(); NotificationSettings settings = await FirebaseMessaging.instance.requestPermission( alert: true, badge: true, sound: true, ); print('User granted permission: ${settings.authorizationStatus}'); FirebaseMessaging.onMessage.listen((RemoteMessage message) { print('Foreground Message: ${message.notification?.title}'); }); FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { print('User tapped on notification'); }); } await dotenv.load(fileName: Environment.fileName); // ✅ Get prefs final prefs = await SharedPreferences.getInstance(); // ✅ Decide initialRoute String initialRoute = 'login'; if (!kIsWeb) { if (prefs.containsKey('is_mpin_skipped')) { final isMpinSkipped = prefs.getString('is_mpin_skipped'); if (isMpinSkipped == '0') { initialRoute = 'pinPage'; } } } runApp(MyApp(initialRoute: initialRoute)); } class MyApp extends StatelessWidget { final String initialRoute; const MyApp({super.key, required this.initialRoute}); @override Widget build(BuildContext context) { return MaterialApp( // initialRoute: 'login', initialRoute: initialRoute, debugShowCheckedModeBanner: false, routes: { 'splash': (context) => SplashScreen(), 'login': (context) => login(), 'mailVerify': (context) => MyEmailVerify( email: '', ), 'verify': (context) => MyVerify( verificationId: '', mobileNumber: '', resendToken: null, onResendCode: (String, int) {}, ), 'pinSettingPage': (context) => pinSettingPage(), 'pinPage': (context) => pinPage(), 'changePin': (context) => changePin(), 'home': (context) => Home(), 'policies': (context) => policies(), 'claims': (context) => claims(), 'help': (context) => help(), 'claimprocess': (context) => claimprocess(), 'profile': (context) => profile(), 'wellness': (context) => wellness(), 'planclaimsform': (context) => planclaimsform(), 'tickettracklist': (context) => tickettracklist( ticketID: "", ), 'privacypolicy': (context) => privacypolicy(), 'termsofuse': (context) => termsofuse(), 'generalExclusionsDeductibles': (context) => generalExclusionsDeductibles(), // 'home': (context) => kIsWeb ? Home() : BotmanScaffold(currentRoute: 'home', child: Home()), // 'policies': (context) => kIsWeb ? policies() : BotmanScaffold(currentRoute: 'policies', child: policies()), // 'claims': (context) => kIsWeb ? claims() : BotmanScaffold(currentRoute: 'claims', child: claims()), // 'help': (context) => kIsWeb ? help() : BotmanScaffold(currentRoute: 'help', child: help()), // 'claimprocess': (context) => kIsWeb ? claimprocess() : BotmanScaffold(currentRoute: 'claimprocess', child: claimprocess()), // 'profile': (context) => kIsWeb ? profile() : BotmanScaffold(currentRoute: 'profile', child: profile()), // 'wellness': (context) => kIsWeb ? wellness() : BotmanScaffold(currentRoute: 'wellness', child: wellness()), // 'planclaimsform': (context) => kIsWeb ? planclaimsform() : BotmanScaffold(currentRoute: 'planclaimsform', child: planclaimsform()), // 'claimtracklist': (context) => kIsWeb ? claimtracklist() : BotmanScaffold(currentRoute: 'claimtracklist', child: claimtracklist()), // 'privacypolicy': (context) => kIsWeb ? claimtracklist() : BotmanScaffold(currentRoute: 'privacypolicy', child: claimtracklist()), // 'termsofuse': (context) => kIsWeb ? termsofuse() : BotmanScaffold(currentRoute: 'termsofuse', child: termsofuse()), // 'generalExclusionsDeductibles': (context) => kIsWeb ? generalExclusionsDeductibles() : BotmanScaffold(currentRoute: 'generalExclusionsDeductibles', child: generalExclusionsDeductibles()), 'chatbot': (context) => chatbot(), 'empDetails': (context) => empDetails(), 'addOnsDetails': (context) => addOnsDetails(), 'empReviewDetails': (context) => empReviewDetails(), 'tickets': (context) => tickets(), 'raisedTicketHistory': (context) => raisedTicketHistory(), }, ); } } // Lightweight splash screen to show during app startup class SplashScreen extends StatelessWidget { @override Widget build(BuildContext context) { // Simulate a brief delay before redirecting to the login screen Future.delayed(Duration(seconds: 2), () { Navigator.pushReplacementNamed(context, 'login'); }); return Scaffold( body: Container( color: Color(0x98FFFCE5), // Semi-transparent background child: Center( child: // Your GIF loader widget Image.asset( height: 60, width: 60, 'assets/nhance-loader.gif'), // Adjust path to your GIF loader ), ), ); } } // class BotmanScaffold extends StatelessWidget { // final Widget child; // final String currentRoute; // // const BotmanScaffold({ // required this.child, // required this.currentRoute, // super.key, // }); // // bool get _showBotman { // const excludedRoutes = ['login', 'splash', 'mailVerify', 'verify']; // return !excludedRoutes.contains(currentRoute); // } // // @override // Widget build(BuildContext context) { // return Scaffold( // body: Stack( // children: [ // child, // if (_showBotman) // const Positioned( // bottom: 50, // right: 0, // width: 75, // height: 75, // child: BotmanWidget(), // ), // ], // ), // ); // } // }