import 'dart:io'; 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:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'constant/box_name.dart'; import 'constant/theme.dart'; import 'controller/firebase/firbase_messge.dart'; import 'controller/functions/encrypt_decrypt.dart'; import 'firebase_options.dart'; import 'models/db_sql.dart'; import 'routes.dart'; import 'binding/initial_binding.dart'; import 'package:flutter/foundation.dart' show kIsWeb; final box = GetStorage(); const storage = FlutterSecureStorage(); @pragma('vm:entry-point') Future backgroundMessageHandler(RemoteMessage message) async { await Firebase.initializeApp(); if (message.data.isNotEmpty && message.notification != null) { FirebaseMessagesController().fireBaseTitles(message); } } DbSql sql = DbSql.instance; void main() async { WidgetsFlutterBinding.ensureInitialized(); await GetStorage.init(); await initializeDateFormatting('ar', null); await EncryptionHelper.initialize(); if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) { await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler); List initializationTasks = [ FirebaseMessagesController().getNotificationSettings(), FirebaseMessagesController().getToken(), ]; await Future.wait(initializationTasks); SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); } runApp(const MainApp()); } class MainApp extends StatelessWidget { const MainApp({super.key}); @override Widget build(BuildContext context) { return GetMaterialApp( debugShowCheckedModeBanner: false, title: 'Siro Admin', locale: const Locale('ar'), fallbackLocale: const Locale('en'), themeMode: ThemeMode.system, theme: AppTheme.lightTheme, darkTheme: AppTheme.darkTheme, initialBinding: InitialBinding(), initialRoute: box.read(BoxName.phoneVerified) == true ? "/" : "/login", getPages: routes, ); } }