import 'dart:developer'; import 'package:awesome_notifications/awesome_notifications.dart'; import 'package:flutter/material.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; class NotificationService { static Future initialize() async { await AwesomeNotifications().initialize( null, [ NotificationChannel( channelKey: 'basic_channel', channelGroupKey: 'basic_channel', channelName: 'Basic notifications', channelDescription: 'Notification channel for tests', importance: NotificationImportance.Max, channelShowBadge: true, playSound: true, criticalAlerts: true, onlyAlertOnce: true, defaultColor: const Color(0xFF9D58D0), ledColor: Colors.white) ], channelGroups: [ NotificationChannelGroup( channelGroupKey: 'basic_channel_group', channelGroupName: 'group_1') ], debug: true); await AwesomeNotifications() .isNotificationAllowed() .then((isAllowed) async { if (!isAllowed) { await AwesomeNotifications().requestPermissionToSendNotifications(); } }); await AwesomeNotifications().setListeners( onActionReceivedMethod: onActionReceivedMethod, onNotificationCreatedMethod: onNotificationCreatedMethod, onNotificationDisplayedMethod: onNotificationDisplayedMethod, onDismissActionReceivedMethod: onDismissActionReceivedMethod); } static Future onActionReceivedMethod(ReceivedAction receivedAction) async { // debugPrint('onActionReceivedMethod'); // final payload = receivedAction.payload ?? {}; // if (payload['navigate'] == 'true') { // locator().navigateToWithParams(notificationRoute, {'title': payload['title']!, 'body': payload['body']!}); // } log("onActionReceivedMethod"); showAlertDialog(AppState().context!, 'Test', 'Test', () async {}); } static Future onNotificationCreatedMethod(ReceivedNotification receivedNotification) async { log('onNotificationCreatedMethod'); } static Future onNotificationDisplayedMethod(ReceivedNotification receivedNotification) async { log('onNotificationDisplayedMethod'); } static Future onDismissActionReceivedMethod(ReceivedAction receivedAction) async { log('onDismissActionReceivedMethod'); } static Future show({ required final String title, required final String body, final String? summary, final Map? payload, final ActionType actionType = ActionType.Default, final NotificationLayout notificationLayout = NotificationLayout.Default, final NotificationCategory? category, final String? bigPicture, final List? actionButtons, final bool scheduled = false, final int? interval, }) async { assert(!scheduled || (scheduled && interval != null)); await AwesomeNotifications().createNotification( content: NotificationContent( id: 0, channelKey: 'basic_channel', title: title, body: body, actionType: actionType, notificationLayout: notificationLayout, summary: summary, category: category, payload: payload, bigPicture: bigPicture, ), actionButtons: actionButtons, schedule: scheduled ? NotificationInterval( interval: interval, timeZone: await AwesomeNotifications().getLocalTimeZoneIdentifier(), preciseAlarm: true) : null ); } }