import 'dart:developer'; import 'package:bot_toast/bot_toast.dart'; import 'package:didvan/config/theme_data.dart'; import 'package:didvan/providers/media.dart'; import 'package:didvan/providers/theme.dart'; import 'package:didvan/providers/user.dart'; import 'package:didvan/routes/route_generator.dart'; import 'package:didvan/services/app_initalizer.dart'; import 'package:didvan/services/notification/awsome/awsome_notification_handler.dart'; import 'package:didvan/services/notification/fcm/firebase_notification_handler.dart'; import 'package:didvan/views/podcasts/podcasts_state.dart'; import 'package:didvan/views/podcasts/studio_details/studio_details_state.dart'; import 'package:didvan/services/notification/lc/local_notification_service.dart'; import 'package:didvan/services/notification/lc/show_notification_handler.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; @pragma('vm:entry-point') Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async { // If you're going to use other Firebase services in the background, such as Firestore, // make sure you call `initializeApp` before using other Firebase services. WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: kIsWeb ? const FirebaseOptions( apiKey: "AIzaSyA0HZjKpRuPOi1SC3f_EZTvlS3mcj9UVo0", authDomain: "didvan-9b7da.firebaseapp.com", projectId: "didvan-9b7da", storageBucket: "didvan-9b7da.appspot.com", messagingSenderId: "935017686266", appId: "1:935017686266:web:a93f7a19bed23c51d2d543", measurementId: "G-80B4H9E8Y0") : const FirebaseOptions( apiKey: 'AIzaSyBp-UHjWeM0H0UHtX5yguFKG-riMzvvCzw', appId: '1:935017686266:android:f9cbc9aba8e3d65ed2d543', messagingSenderId: '935017686266', projectId: 'didvan-9b7da', ), ); // LocalNotificationService.initialize(); // LocalNotificationService.display(message); // LocalNotificationService.showBigPictureNotification(); AwsomeNotificationHandler().main(); AwsomeNotificationHandler().show(message); print("Handling a background message: ${message.messageId}"); } void main() async { try { WidgetsFlutterBinding.ensureInitialized(); FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); FirebaseNotificationHandler().initial(); } catch (e) { print(e.toString()); } runApp(const Didvan()); } final GlobalKey navigatorKey = GlobalKey(); class Didvan extends StatelessWidget { const Didvan({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider( create: (context) => PodcastsState(), ), ChangeNotifierProvider( create: (context) => MediaProvider(), ), ChangeNotifierProvider( create: (context) => UserProvider(), ), ChangeNotifierProvider( create: (context) => ThemeProvider(), ), ChangeNotifierProvider( create: (context) => StudioDetailsState(), ), ], child: Consumer( builder: (context, themeProvider, child) => Container( color: Theme.of(context).colorScheme.surface, child: SafeArea( child: MaterialApp( navigatorKey: navigatorKey, debugShowCheckedModeBanner: false, title: 'Didvan', theme: LightThemeConfig.themeData.copyWith( textTheme: LightThemeConfig.themeData.textTheme.apply( fontFamily: themeProvider.fontFamily, )), darkTheme: DarkThemeConfig.themeData.copyWith( textTheme: DarkThemeConfig.themeData.textTheme.apply( fontFamily: themeProvider.fontFamily, )), color: LightThemeConfig.themeData.primaryColor, themeMode: themeProvider.themeMode, onGenerateRoute: (settings) => RouteGenerator.generateRoute(settings), builder: BotToastInit(), //1. call BotToastInit navigatorObservers: [BotToastNavigatorObserver()], initialRoute: '/', localizationsDelegates: const [ GlobalCupertinoLocalizations.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], supportedLocales: const [ Locale("fa", "IR"), ], locale: const Locale("fa", "IR"), ), ), ), ), ); } }