import 'dart:io'; import 'package:diplomaticquarterapp/core/viewModels/PharmacyPagesViewModel.dart'; import 'package:diplomaticquarterapp/core/viewModels/dashboard_view_model.dart'; import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart'; import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/services/payfort_services/payfort_view_model.dart'; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart'; import 'package:diplomaticquarterapp/theme/theme_notifier.dart'; import 'package:diplomaticquarterapp/theme/theme_value.dart'; import 'package:diplomaticquarterapp/uitl/LocalNotification.dart'; import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart'; import 'package:diplomaticquarterapp/uitl/navigation_service.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/voipcall/provider/chat_call_provider.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:logger/logger.dart'; import 'package:provider/provider.dart'; import 'config/size_config.dart'; import 'core/viewModels/pharmacyModule/OrderPreviewViewModel.dart'; import 'core/viewModels/project_view_model.dart'; import 'locator.dart'; import 'pages/pharmacies/compare-list.dart'; var logger = Logger( printer: PrettyPrinter( methodCount: 2, // Number of method calls to be displayed errorMethodCount: 8, // Number of method calls if stacktrace is provided lineLength: 500, // Width of the output colors: true, // Colorful log messages printEmojis: true, // Print an emoji for each log message printTime: false // Should each log print contain a timestamp ), ); void main() async { WidgetsFlutterBinding.ensureInitialized(); setupLocator(); await Firebase.initializeApp(); HttpOverrides.global = MyHttpOverrides(); runApp(MyApp()); } class MyApp extends StatefulWidget { @override _MyApp createState() => new _MyApp(); } class MyHttpOverrides extends HttpOverrides { @override HttpClient createHttpClient(SecurityContext? context) { return super.createHttpClient(context)..badCertificateCallback = (X509Certificate cert, String host, int port) => true; } } class _MyApp extends State { // late AppUpdateInfo _updateInfo; final GlobalKey navigatorKey = GlobalKey(); //0537503378 //1231755 //0567184134 mobile //246305493 // checkForUpdate() { // // todo need to verify 'imp' // InAppUpdate.checkForUpdate().then((info) { // print("checkForUpdate!!!"); // print(info.toString()); // if (info.immediateUpdateAllowed) { // print("Immediate567184134 Allowed!!!"); // InAppUpdate.performImmediateUpdate().then((value) {}).catchError((e) => print(e.toString())); // } // }).catchError((e) { // print(e.toString()); // }); // } @override void initState() { //ProjectViewModel projectProvider; // projectProvider = Provider.of(context); // var font = projectProvider.isArabic ? 'Cairo' : 'WorkSans'; // Re-enable once going live // if (Platform.isAndroid) checkForUpdate(); ThemeNotifier(defaultTheme()); super.initState(); } @override Widget build(BuildContext context) { PlatformBridge.init(context); LocalNotification.init(onNotificationClick: (payload) { LocalNotification.getInstance()?.showNow(title: "Payload", subtitle: payload, payload: payload); }); // SystemChrome.setPreferredOrientations([ // DeviceOrientation.portraitUp, // DeviceOrientationO.portraitDown, // ]); // final themeNotifier = Provider.of(context); precacheImage(AssetImage('assets/images/powerd-by.jpg'), context); return LayoutBuilder( builder: (context, constraints) { return OrientationBuilder( builder: (context, orientation) { SizeConfig().init(constraints, orientation); return MultiProvider( providers: [ ChangeNotifierProvider( create: (context) => PharmacyPagesViewModel(), ), ChangeNotifierProvider( create: (context) => ProjectViewModel(), ), ChangeNotifierProvider( create: (context) => DashboardViewModel(), ), ChangeNotifierProvider( create: (context) => ToDoCountProviderModel(), ), ChangeNotifierProvider( create: (context) => SearchProvider(), ), ChangeNotifierProvider.value( value: SearchProvider(), ), ChangeNotifierProvider( create: (context) => ThemeNotifier( defaultTheme(), ), ), StreamProvider.value( value: RobotProvider().intStream(), initialData: RobotProvider().setValue({}), ), ChangeNotifierProvider( create: (context) => CompareList(), ), ChangeNotifierProvider( create: (context) => OrderPreviewViewModel(), ), ChangeNotifierProvider(create: (context) => PayfortViewModel()), ChangeNotifierProvider(create: (context) => ChatCallProvider()), ], child: Consumer( builder: (context, projectProvider, child) => MaterialApp( builder: (_, mchild) { return MediaQuery( data: MediaQuery.of(context).copyWith( textScaler: TextScaler.linear(1.0), ), //set desired text scale factor here child: mchild!); // Container( // color: Colors.blue, // )); }, navigatorKey: locator().navigatorKey, showSemanticsDebugger: false, title: 'Dr. AlHabib', locale: projectProvider.appLocal, localizationsDelegates: [ TranslationBaseDelegate(), GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: [ const Locale('ar', ''), // Arabic const Locale('en', ''), // English ], theme: Provider.of(context).getTheme(), initialRoute: SPLASH, // initialRoute: CALL_PAGE, // initialRoute: OPENTOK_CALL_PAGE, // initialRoute: PACKAGES_OFFERS, // initialRoute: PACKAGES_ORDER_COMPLETED, routes: routes, debugShowCheckedModeBanner: false, ), ), ); }, ); }, ); } }