Files
musadaq-saas/musadaq-app/lib/main.dart
2026-05-08 06:19:56 +03:00

57 lines
1.8 KiB
Dart

import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:firebase_core/firebase_core.dart';
import 'app/routes/app_pages.dart';
import 'core/services/push_notification_service.dart';
import 'core/services/upload_progress_service.dart';
import 'core/services/home_widget_service.dart';
import 'core/services/shorebird_update_service.dart';
import 'core/services/device_security_service.dart';
import 'app/theme/app_theme.dart';
@pragma('vm:entry-point')
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
debugPrint("Handling a background message: ${message.messageId}");
}
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 1. Initialize Firebase & Notifications
await Firebase.initializeApp();
await PushNotificationService.initialize();
// 2. Register background handler
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
// 3. Security check (MUST be first)
Get.put(DeviceSecurityService(), permanent: true);
// 4. Register global services
Get.put(UploadProgressService(), permanent: true);
Get.put(HomeWidgetService(), permanent: true);
Get.put(ShorebirdUpdateService(), permanent: true);
runApp(const MusadaqApp());
}
class MusadaqApp extends StatelessWidget {
const MusadaqApp({super.key});
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Musadaq',
theme: AppTheme.lightTheme,
darkTheme: AppTheme.darkTheme,
themeMode: ThemeMode.system,
initialRoute: AppPages.INITIAL,
getPages: AppPages.routes,
debugShowCheckedModeBanner: false,
locale: const Locale('ar', 'JO'), // Arabic by default
);
}
}