import 'dart:io'; import 'package:doctor_app_flutter/client/http_Overrides.dart'; import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/provider/robot_provider.dart'; import 'package:doctor_app_flutter/core/service/AnalyticsService.dart'; import 'package:doctor_app_flutter/core/service/NavigationService.dart'; import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/livecare_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/locator.dart'; import 'package:doctor_app_flutter/routes.dart'; import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); HttpOverrides.global = MyHttpOverrides(); setupLocator(); await clearPrefsOnFirstLaunch(); runApp(MyApp()); } //clearing all the shared pref on the inital start to avoid any profile issue Future clearPrefsOnFirstLaunch() async { SharedPreferences prefs = await SharedPreferences. getInstance(); bool isFirstLaunch = prefs.getBool('isFirstLaunch') ?? true; await prefs.clear(); // Clear all prefs } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { AppGlobal.CONTEX = context; return LayoutBuilder( builder: (context, constraints) { return OrientationBuilder(builder: (context, orientation) { SizeConfig().init(constraints, orientation); return MultiProvider( providers: [ ChangeNotifierProvider(create: (context) => AuthenticationViewModel()), ChangeNotifierProvider( create: (context) => ProjectViewModel(), ), ChangeNotifierProvider( create: (context) => LiveCareViewModel(), ), StreamProvider.value( value: RobotProvider().intStream(), initialData: RobotProvider().setValue({}), ) ], child: Consumer( builder: (context, projectProvider, child) => MaterialApp( showSemanticsDebugger: false, title: 'Doctors App', locale: projectProvider.appLocal, localizationsDelegates: [ TranslationBaseDelegate(), GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, DefaultCupertinoLocalizations.delegate ], supportedLocales: [ const Locale('ar', ''), // Arabic const Locale('en', ''), // English ], theme: ThemeData( primarySwatch: Colors.grey, primaryColor: Colors.grey, //buttonColor: HexColor('#D02127'), fontFamily: 'Poppins', dividerColor: Colors.grey[350], // backgroundColor: Color.fromRGBO(255, 255, 255, 1), useMaterial3: false), navigatorKey: locator().navigatorKey, navigatorObservers: [ locator().getAnalyticsObserver(), ], initialRoute: INIT_ROUTE, routes: routes, debugShowCheckedModeBanner: false, ), ), ); }); }, ); } }