Client/lib/notification/notificationService.dart
2023-08-24 22:26:19 +02:00

80 lines
2.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart';
import '../model/chatList/chatListProps.dart';
import '../model/message/messageProps.dart';
class NotificationService {
static final NotificationService _instance = NotificationService._internal();
factory NotificationService() {
return _instance;
}
NotificationService._internal();
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
Future<void> 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<void> 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,
);
Provider.of<ChatListProps>(context, listen: false).run(renew: true);
Provider.of<MessageProps>(context, listen: false).run(renew: true);
}
}