You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudsolutions-atoms/lib/controllers/notification/notification_manger.dart

85 lines
2.8 KiB
Dart

import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import '../../views/app_style/colors.dart';
class NotificationManger {
// private constructor to avoid create object
NotificationManger._();
static FlutterLocalNotificationsPlugin localNotificationsPlugin =
FlutterLocalNotificationsPlugin();
/// initialisation setting for all platform
/// onNotificationPressed action when notification pressed to open tap
/// onIOSNotificationPressed action when notification pressed
/// to open tap in iOS versions older than 10
static initialisation(Function(NotificationResponse) onNotificationPressed,
DidReceiveLocalNotificationCallback onIOSNotificationPressed) async {
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
// initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings(
'app_icon',
);
final DarwinInitializationSettings initializationSettingsDarwin =
DarwinInitializationSettings(
onDidReceiveLocalNotification: onIOSNotificationPressed);
final InitializationSettings initializationSettings =
InitializationSettings(
android: initializationSettingsAndroid,
iOS: initializationSettingsDarwin,
macOS: initializationSettingsDarwin);
await flutterLocalNotificationsPlugin.initialize(initializationSettings,
onDidReceiveNotificationResponse: onNotificationPressed);
}
// push new notification
static Future showNotification({
required String? title,
required String? subtext,
required int hashcode,
String? payload,
}) async {
const AndroidNotificationDetails androidChannel =
AndroidNotificationDetails(
'com.newtrack.testsa',
'Test SA',
channelDescription: 'Push notification service for Test SA',
importance: Importance.max,
priority: Priority.max,
playSound: true,
channelShowBadge: true,
enableLights: true,
visibility: NotificationVisibility.public,
ledColor: AColors.secondaryColor,
ledOnMs: 1,
ledOffMs: 0,
enableVibration: true,
groupKey: 'com.newtrack.testsa',
);
const DarwinNotificationDetails iosNotificationDetails =
DarwinNotificationDetails(
categoryIdentifier: "testSA",
);
const platformChannel = NotificationDetails(
android: androidChannel,
iOS: iosNotificationDetails,
macOS: iosNotificationDetails,
);
await localNotificationsPlugin.show(
hashcode,
title,
subtext,
platformChannel,
payload: payload,
);
}
}