0% found this document useful (0 votes)
19 views3 pages

Flutter Firebase App Initialization

This document contains code for initializing a Flutter application. It imports necessary packages, sets up Firebase and notifications, initializes the app configuration, and defines the main and MyApp widgets. The main function initializes services, runs the app, and handles notifications. MyApp creates the MaterialApp widget with routing and themes defined.

Uploaded by

Ajay Shrestha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views3 pages

Flutter Firebase App Initialization

This document contains code for initializing a Flutter application. It imports necessary packages, sets up Firebase and notifications, initializes the app configuration, and defines the main and MyApp widgets. The main function initializes services, runs the app, and handles notifications. MyApp creates the MaterialApp widget with routing and themes defined.

Uploaded by

Ajay Shrestha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

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)),
),
);
},
);
}
}

You might also like