import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:hmg_flutter_template/classes/size_config.dart'; import 'package:hmg_flutter_template/config/app_state.dart'; import 'package:hmg_flutter_template/config/dependencies.dart'; import 'package:hmg_flutter_template/config/routes.dart'; import 'package:hmg_flutter_template/provider/dashboard_provider_model.dart'; import 'package:hmg_flutter_template/provider/login_provider_model.dart'; import 'package:hmg_flutter_template/theme/app_theme.dart'; import 'package:injector/injector.dart'; import 'package:logger/logger.dart'; import 'package:provider/provider.dart'; import 'package:provider/single_child_widget.dart'; import 'package:sizer/sizer.dart'; import 'generated/codegen_loader.g.dart'; late AppState appState; final navigatorKey = GlobalKey(); Logger logger = Logger( printer: PrettyPrinter( lineLength: 0, ), ); class MyHttpOverrides extends HttpOverrides { @override HttpClient createHttpClient(SecurityContext? context) { return super.createHttpClient(context)..badCertificateCallback = (X509Certificate cert, String host, int port) => true; } } Future main() async { WidgetsFlutterBinding.ensureInitialized(); await EasyLocalization.ensureInitialized(); // AppState().setPostParamsInitConfig(); HttpOverrides.global = MyHttpOverrides(); await Firebase.initializeApp(); runApp( EasyLocalization( supportedLocales: const [ Locale('en', 'US'), Locale('ar', 'SA'), ], path: 'assets/langs', assetLoader: const CodegenLoader(), child: MultiProvider( providers: [ ChangeNotifierProvider( create: (_) => DashboardProviderModel(), ), ChangeNotifierProvider( create: (_) => LoginProviderModel(), ), ChangeNotifierProvider( create: (_) => DashboardProviderModel(), ), ], child: MyApp(), ), ), ); } // todo terminal command to generate translation files // flutter pub run easy_localization:generate --source-dir ./assets/langs // todo terminal command to generate translation keys // flutter pub run easy_localization:generate --source-dir ./assets/langs -f keys -o locale_keys.g.dart // command to generate languages data from json class MyApp extends StatelessWidget { MyApp({super.key}) { AppDependencies.addDependencies(); appState = Injector.appInstance.get(); appState.setPostParamsInitConfig(); } @override Widget build(BuildContext context) { return LayoutBuilder(builder: (context, constraints) { return Sizer( builder: ( BuildContext context, Orientation orientation, DeviceType deviceType, ) { SizeConfig().init(constraints, orientation); List> delegates = context.localizationDelegates; return MaterialApp( // key: navigatorKey, navigatorKey: navigatorKey, theme: AppTheme.getTheme( EasyLocalization.of(context)?.locale.languageCode == "ar", ), debugShowCheckedModeBanner: false, localizationsDelegates: delegates, supportedLocales: context.supportedLocales, locale: context.locale, initialRoute: AppRoutes.initialPage, routes: AppRoutes.routes, ); }, ); }); } }