initialize static method

Future<void> initialize({
  1. dynamic notificationTap(
    1. Map<String, dynamic>
    )?,
})

Implementation

static Future<void> initialize({Function(Map<String, dynamic>)? notificationTap}) async {
  handleNotificationTap = notificationTap;
  const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('@mipmap/ic_launcher');

  const InitializationSettings initializationSettings = InitializationSettings(
    android: initializationSettingsAndroid,
    iOS: DarwinInitializationSettings());

  await flutterLocalNotificationsPlugin.initialize(
    initializationSettings,
    onDidReceiveNotificationResponse: (NotificationResponse response) {
      debugPrint('Foreground notification tapped: ${response.payload}');

      if (response.payload == null || (response.payload?.isEmpty ?? true)) {
        return;
      }

      handleNotificationTap?.call(jsonDecode(makeValidJson(response.payload ?? "")));
    },
    onDidReceiveBackgroundNotificationResponse: onDidReceiveBackgroundNotificationResponse,
  );

  FirebaseMessaging.onMessage.listen((RemoteMessage message) {
    debugPrint('Received message: ${message.notification}');
    RemoteNotification? notification = message.notification;

    if (notification != null) {
      _showNotification(
        notification.title ?? "No Title",
        notification.body ?? "No Body",
        message.data,
      );
    }

    // handleNotificationTap?.call(jsonDecode(makeValidJson(message.data.toString())));

  });

  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

  await requestNotificationPermission();
}