main function Null safety
Initialises providers and passes them to descendants of MyApp.
Implementation
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
FirebaseFirestore firestoreInstance = FirebaseFirestore.instance;
FirebaseAuth authInstance = FirebaseAuth.instance;
FirebaseMessaging messagingInstance = FirebaseMessaging.instance;
final FirebaseLoginProvider loginProvider =
FirebaseLoginProvider(authInstance: authInstance);
loginProvider.init();
final FirebaseRegisterProvider registerProvider =
FirebaseRegisterProvider(authInstance: authInstance);
final FirebaseScreensProvider screensProvider = FirebaseScreensProvider(
authInstance: authInstance, firestoreInstance: firestoreInstance);
final FirebasePreviewProvider previewProvider =
FirebasePreviewProvider(firestoreInstance: firestoreInstance);
final FirebaseScreenInfoProvider screenInfoProvider =
FirebaseScreenInfoProvider(
firestoreInstance: firestoreInstance, authInstance: authInstance);
final FirebaseTemplatesProvider templatesProvider = FirebaseTemplatesProvider(
firestoreInstance: firestoreInstance, authInstance: authInstance);
final TokenUpdaterService tokenUpdater = TokenUpdaterService(
authInstance: authInstance,
messagingInstance: messagingInstance,
firestoreInstance: firestoreInstance);
await tokenUpdater.init();
final NotificationService notificationService = NotificationService();
await notificationService.init();
final ThemeProvider themeProvider = ThemeProvider();
await themeProvider.init();
runApp(MultiProvider(
providers: [
ChangeNotifierProvider(create: (context) => loginProvider),
ChangeNotifierProvider(create: (context) => registerProvider),
ChangeNotifierProvider(create: (context) => screensProvider),
ChangeNotifierProvider(create: (context) => previewProvider),
ChangeNotifierProvider(create: (context) => templatesProvider),
ChangeNotifierProvider(create: (context) => screenInfoProvider),
ChangeNotifierProvider(create: (context) => themeProvider),
],
child: const MyApp(),
));
}