Forked from
vjrj / ginkgo
696 commits behind the upstream repository.
notification_controller_mobile.dart 9.17 KiB
import 'package:awesome_notifications/awesome_notifications.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import '../config/theme.dart';
import '../main.dart';
import 'logger.dart';
import 'ui_helpers.dart';
// ignore: avoid_classes_with_only_static_members
/// *********************************************
/// NOTIFICATION CONTROLLER
/// *********************************************
///
class NotificationController {
static ReceivedAction? initialAction;
static Locale locale = const Locale('en', 'UK');
/// *********************************************
/// INITIALIZATIONS
/// *********************************************
///
static Future<void> initializeLocalNotifications() async {
await AwesomeNotifications().initialize(
null, //'resource://drawable/res_app_icon',//
<NotificationChannel>[
NotificationChannel(
channelKey: 'alerts',
channelName: 'Alerts',
channelDescription: 'Notification tests as alerts',
playSound: true,
onlyAlertOnce: true,
groupAlertBehavior: GroupAlertBehavior.Children,
importance: NotificationImportance.High,
defaultPrivacy: NotificationPrivacy.Private,
defaultColor: lightColorScheme.primary,
ledColor: lightColorScheme.primary)
],
debug: true);
// Get initial notification action is optional
initialAction = await AwesomeNotifications().getInitialNotificationAction();
}
/// *********************************************
/// NOTIFICATION EVENTS LISTENER
/// *********************************************
/// Notifications events are only delivered after call this method
static Future<void> startListeningNotificationEvents() async {
AwesomeNotifications()
.setListeners(onActionReceivedMethod: onActionReceivedMethod);
}
/// *********************************************
/// NOTIFICATION EVENTS
/// *********************************************
///
@pragma('vm:entry-point')
static Future<void> onActionReceivedMethod(
ReceivedAction receivedAction) async {
if (receivedAction.actionType == ActionType.SilentAction ||
receivedAction.actionType == ActionType.SilentBackgroundAction) {
// For background actions, you must hold the execution until the end
logger(
'Message sent via notification input: "${receivedAction.buttonKeyInput}"');
// await executeLongTaskInBackground();
} else {
// FIXME (vjrj): go to transactions tab
GinkgoApp.navigatorKey.currentState?.pushNamedAndRemoveUntil(