import 'package:auto_route/auto_route.
dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/[Link]';
import 'package:flutter/[Link]';
import 'package:flutter/[Link]';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get_it/get_it.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:injectable/[Link]';
import 'package:path_provider/path_provider.dart';
import 'config/app_config.dart';
import 'config/app_env.dart';
import 'config/app_theme.dart';
import 'core/injection/[Link]';
import 'core/routes/app_router.[Link]';
import 'core/routes/auth_guard.dart';
import 'firebase_options.dart';
const AndroidNotificationChannel channel = AndroidNotificationChannel(
'high_importance_channel', 'High Importance Notification',
description: 'This chanel is used for important notification.',
importance: [Link]);
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
Future<void> _firebaseMessagingBackgroundHaldler(RemoteMessage message) async {
await [Link]();
if (kDebugMode) {
print('Handling a background message ${[Link]}');
}
}
void main() async {
[Link]();
[Link] = [Link];
[Link] = false;
[Link] = false;
await AppEnv().injectFlavor();
await [Link](
options: [Link],
);
[Link](_firebaseMessagingBackgroundHaldler);
await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()
?.createNotificationChannel(channel);
final storage = await [Link](
storageDirectory: await getTemporaryDirectory(),
);
GetIt.I<AppConfig>().initialize(
appName: 'Sayapatri',
baseUrl: '[Link]
flavorName: [Link]);
// GetIt.I<AppConfig>().initialize(
// appName: 'Sayapatri',
// baseUrl: '[Link]
// flavorName: 'dev'
// );
runApp(const MyApp());
//for testing
// runApp(
// DevicePreview(
// enabled: !kReleaseMode,
// builder: (context) => MyApp(),
// ),
// );
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
[Link]();
var initializationSettingsAndroid =
const AndroidInitializationSettings('@mipmap/ic_launcher');
var initializationSettings =
InitializationSettings(android: initializationSettingsAndroid);
[Link](initializationSettings);
[Link]((RemoteMessage message) {
RemoteNotification? notification = [Link];
AndroidNotification? android = [Link]?.android;
if (notification != null && android != null) {
[Link](
[Link],
[Link],
[Link],
NotificationDetails(
android: AndroidNotificationDetails(
[Link],
[Link],
channelDescription: [Link],
icon: 'launch_background',
),
),
);
}
});
}
final _appRouter = AppRouter(authGuard: getIt<AuthGuard>());
@override
Widget build(BuildContext context) {
return MaterialApp(
useInheritedMediaQuery: true,
debugShowCheckedModeBanner: false,
builder: (context, child) {
//Disables device rotation to landscape.
[Link]([
[Link],
[Link],
]);
return FlutterEasyLoading(
child: ScreenUtilInit(
designSize: const Size(428,
926), // The [Size] of the device in the design draft, in dp
builder: (_, __) => [Link](
debugShowCheckedModeBanner: false,
theme: [Link],
themeMode: [Link],
routeInformationParser: _appRouter.defaultRouteParser(),
routerDelegate: AutoRouterDelegate(_appRouter)),
),
);
},
);
}
}