init method

Future<void> init({
  1. required GlobalKey<NavigatorState> navigatorKey,
})

Initialize everything β€” call this in main() AFTER Firebase.initializeApp()

Implementation

Future<void> init({required GlobalKey<NavigatorState> navigatorKey}) async {
  await _initializeLocalNotifications();
  await _requestPermission();
  await _getDeviceToken();

  // πŸ‘‰ Handle messages when app is in FOREGROUND
  FirebaseMessaging.onMessage.listen(_handleForegroundMessage);

  // πŸ‘‰ Handle when app is in BACKGROUND and user taps notification
  FirebaseMessaging.onMessageOpenedApp.listen(_handleNotificationTap);

  // πŸ‘‰ Handle when app is TERMINATED and opened via notification
  WidgetsBinding.instance.addPostFrameCallback((_) async {
    final RemoteMessage? initialMessage = await messaging.getInitialMessage();
    if (initialMessage != null) {
      _handleNotificationTap(initialMessage);
    }
  });

  // πŸ‘‰ Set background message handler (MUST be top-level/static)
  FirebaseMessaging.onBackgroundMessage(_firebaseBackgroundHandler);
}