together_mobile/lib/notification_api.dart

64 lines
2.0 KiB
Dart
Raw Normal View History

2023-06-21 17:44:28 +08:00
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
2023-06-29 17:02:09 +08:00
/// Requesting permissions
2023-06-21 17:44:28 +08:00
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
/// Streams are created so that app can respond to notification-related events
/// since the plugin is initialised in the `main` function
final StreamController<ReceivedNotification?>
didReceiveLocalNotificationStream =
StreamController<ReceivedNotification>.broadcast();
final StreamController<String?> selectNotificationStream =
StreamController<String?>.broadcast();
const MethodChannel platform =
MethodChannel('dexterx.dev/flutter_local_notifications_example');
const String portName = 'notification_send_port';
class ReceivedNotification {
final int id;
final String? title;
final String? body;
final String? payload;
const ReceivedNotification({
required this.id,
required this.title,
required this.body,
required this.payload,
});
}
String? selectedNotificationPayload;
/// A notification action which triggers a url launch event
const String urlLanunchActionId = 'id_1';
/// A notification action which triggers a App navigation event
const String navigationActionId = 'id-3';
/// Defines a iOS/MacOS notification category for text input actions.
const String darwinNotificationCategoryText = 'textCategory';
/// Defines a iOS/MacOS notification category for text input actions.
const String darwinNotificationCategoryPlain = 'plainCategory';
@pragma('vm:entry-point')
void notificationTapBackground(NotificationResponse notificationResponse) {
print('notification(${notificationResponse.id}) action tapped: '
'${notificationResponse.actionId} with'
' payload: ${notificationResponse.payload}');
if (notificationResponse.input?.isNotEmpty ?? false) {
print('notification action tapped with input: ${notificationResponse.input}');
}
}