init method
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);
}