You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
3.6 KiB
Dart
115 lines
3.6 KiB
Dart
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<NavigatorState>();
|
|
|
|
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<void> main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
await EasyLocalization.ensureInitialized();
|
|
// AppState().setPostParamsInitConfig();
|
|
HttpOverrides.global = MyHttpOverrides();
|
|
await Firebase.initializeApp();
|
|
runApp(
|
|
EasyLocalization(
|
|
supportedLocales: const <Locale>[
|
|
Locale('en', 'US'),
|
|
Locale('ar', 'SA'),
|
|
],
|
|
path: 'assets/langs',
|
|
assetLoader: const CodegenLoader(),
|
|
child: MultiProvider(
|
|
providers: <SingleChildWidget>[
|
|
ChangeNotifierProvider<DashboardProviderModel>(
|
|
create: (_) => DashboardProviderModel(),
|
|
),
|
|
ChangeNotifierProvider<LoginProviderModel>(
|
|
create: (_) => LoginProviderModel(),
|
|
),
|
|
ChangeNotifierProvider<DashboardProviderModel>(
|
|
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>();
|
|
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<LocalizationsDelegate<dynamic>> 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,
|
|
);
|
|
},
|
|
);
|
|
});
|
|
}
|
|
}
|
|
|
|
|