bootstrap function

Future<void> bootstrap({
  1. required FirebaseOptions firebaseOptions,
  2. required Iterable<Store> stores,
  3. required Iterable<Effect> effects,
  4. Effect? listener,
})

Implementation

Future<void> bootstrap({
  required FirebaseOptions firebaseOptions,
  required Iterable<Store> stores,
  required Iterable<Effect> effects,
  Effect? listener,
}) async {
  WidgetsFlutterBinding.ensureInitialized();

  stores.forEach(connectStore);

  final subscription = listenEffect((event) {
    listener?.call(event);
  });

  [
    loadEnvEffect,
    initializeMessagingEffect,
    initializeNotificationChannelEffect,
    initializeFirebaseAnalytics,
    ...effects
  ].forEach(listenEffect);

  await Firebase.initializeApp(options: firebaseOptions);

  FirebaseMessaging.onBackgroundMessage(backgroundMessageEffect);

  subscription.cancel();
}