|  |  |  | import 'dart:io'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import 'package:easy_localization/easy_localization.dart'; | 
					
						
							|  |  |  | import 'package:firebase_core/firebase_core.dart'; | 
					
						
							|  |  |  | import 'package:firebase_messaging/firebase_messaging.dart'; | 
					
						
							|  |  |  | import 'package:flutter/material.dart'; | 
					
						
							|  |  |  | import 'package:flutter/services.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/core/app_state.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/routes/app_routes.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/theme/app_theme.dart'; | 
					
						
							|  |  |  | import 'package:logger/logger.dart'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import 'core/utils/size_utils.dart'; | 
					
						
							|  |  |  | import 'firebase_options.dart'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var globalMessengerKey = GlobalKey<ScaffoldMessengerState>(); | 
					
						
							|  |  |  | final navigatorKey = GlobalKey<NavigatorState>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Logger logger = Logger( | 
					
						
							|  |  |  |   printer: PrettyPrinter( | 
					
						
							|  |  |  |     lineLength: 0, | 
					
						
							|  |  |  |   ), | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | late AppState appState; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @pragma('vm:entry-point') | 
					
						
							|  |  |  | Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { | 
					
						
							|  |  |  |   await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); | 
					
						
							|  |  |  |   print("Firebase backgroundMessageHandler Main!!!"); | 
					
						
							|  |  |  |   // debugPrint('backgroundMessage: message => ${message.notification!.title.toString()}');
 | 
					
						
							|  |  |  |   // messagesOpended = message.notification!.title.toString();
 | 
					
						
							|  |  |  |   var payload = message.data; | 
					
						
							|  |  |  |   // showCallkitIncoming(payload);
 | 
					
						
							|  |  |  |   // await backgroundCallHandler(payload);
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MyHttpOverrides extends HttpOverrides { | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   HttpClient createHttpClient(SecurityContext? context) { | 
					
						
							|  |  |  |     return super.createHttpClient(context)..badCertificateCallback = (X509Certificate cert, String host, int port) => true; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void main() async { | 
					
						
							|  |  |  |   WidgetsFlutterBinding.ensureInitialized(); | 
					
						
							|  |  |  |   await EasyLocalization.ensureInitialized(); | 
					
						
							|  |  |  |   await Firebase.initializeApp(name: "hmg-patient-app", options: DefaultFirebaseOptions.currentPlatform); | 
					
						
							|  |  |  |   SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); | 
					
						
							|  |  |  |   HttpOverrides.global = MyHttpOverrides(); | 
					
						
							|  |  |  |   runApp( | 
					
						
							|  |  |  |     EasyLocalization( | 
					
						
							|  |  |  |       supportedLocales: const <Locale>[ | 
					
						
							|  |  |  |         Locale('en', 'US'), | 
					
						
							|  |  |  |         Locale('ar', 'SA'), | 
					
						
							|  |  |  |       ], | 
					
						
							|  |  |  |       path: 'assets/langs', | 
					
						
							|  |  |  |       fallbackLocale: Locale('en', 'US'), | 
					
						
							|  |  |  |       // assetLoader: const CodegenLoader(),
 | 
					
						
							|  |  |  |       child: MyApp(), | 
					
						
							|  |  |  |     ), | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MyApp extends StatelessWidget { | 
					
						
							|  |  |  |   const MyApp({super.key}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // This widget is the root of your application.
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Widget build(BuildContext context) { | 
					
						
							|  |  |  |     return SafeArea( | 
					
						
							|  |  |  |         top: false, // Set to true if you want to avoid the notch area as well
 | 
					
						
							|  |  |  |         bottom: Platform.isIOS ? false : true, | 
					
						
							|  |  |  |         child: LayoutBuilder(builder: (context, constraints) { | 
					
						
							|  |  |  |           return Sizer( | 
					
						
							|  |  |  |             builder: (context, orientation, deviceType) { | 
					
						
							|  |  |  |               // SizeConfig().init(constraints, orientation);
 | 
					
						
							|  |  |  |               return MaterialApp( | 
					
						
							|  |  |  |                 title: 'Dr. AlHabib', | 
					
						
							|  |  |  |                 builder: (context, mchild) { | 
					
						
							|  |  |  |                   return MediaQuery( | 
					
						
							|  |  |  |                       data: MediaQuery.of(context).copyWith( | 
					
						
							|  |  |  |                         textScaler: TextScaler.linear(1.0), | 
					
						
							|  |  |  |                       ), //set desired text scale factor here
 | 
					
						
							|  |  |  |                       child: mchild!); | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |                 showSemanticsDebugger: false, | 
					
						
							|  |  |  |                 debugShowCheckedModeBanner: false, | 
					
						
							|  |  |  |                 localizationsDelegates: context.localizationDelegates, | 
					
						
							|  |  |  |                 supportedLocales: context.supportedLocales, | 
					
						
							|  |  |  |                 locale: context.locale, | 
					
						
							|  |  |  |                 initialRoute: AppRoutes.initialRoute, | 
					
						
							|  |  |  |                 routes: AppRoutes.routes, | 
					
						
							|  |  |  |                 theme: AppTheme.getTheme( | 
					
						
							|  |  |  |                   EasyLocalization.of(context)?.locale.languageCode == "ar", | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 navigatorKey: navigatorKey, | 
					
						
							|  |  |  |               ); | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           ); | 
					
						
							|  |  |  |         })); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |