import 'package:flutter/material.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:fluttertoast/fluttertoast.dart'; class NotificationService { static final NotificationService _instance = NotificationService._internal(); factory NotificationService() { return _instance; } NotificationService._internal(); FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); Future initializeNotifications() async { const AndroidInitializationSettings androidSettings = AndroidInitializationSettings( '@mipmap/ic_launcher' ); final DarwinInitializationSettings iosSettings = DarwinInitializationSettings( onDidReceiveLocalNotification: (id, title, body, payload) { // TODO Navigate to Talk section (This runs when an Notification is tapped) }, ); final InitializationSettings initializationSettings = InitializationSettings( android: androidSettings, iOS: iosSettings, ); await flutterLocalNotificationsPlugin.initialize( initializationSettings, ); } Future showNotification({required String title, required String body, required int badgeCount}) async { const AndroidNotificationDetails androidPlatformChannelSpecifics = AndroidNotificationDetails( 'marmobile', 'Marianum Fulda', importance: Importance.defaultImportance, priority: Priority.defaultPriority, ticker: 'Marianum Fulda', ); const DarwinNotificationDetails iosPlatformChannelSpecifics = DarwinNotificationDetails(); const NotificationDetails platformChannelSpecifics = NotificationDetails( android: androidPlatformChannelSpecifics, iOS: iosPlatformChannelSpecifics ); await flutterLocalNotificationsPlugin.show( 0, title, body, platformChannelSpecifics, ); } void showToast({required String message, required BuildContext context, ToastGravity gravity = ToastGravity.TOP}) { Fluttertoast.showToast( msg: message, gravity: gravity, toastLength: Toast.LENGTH_SHORT, backgroundColor: Theme.of(context).primaryColor, textColor: Colors.white, fontSize: 13.0, ); } }