这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

62 lines
2.3 KiB

import 'dart:async';
import 'package:get/get.dart';
import 'package:rxdart/rxdart.dart' hide Notification;
import 'package:core/models/notifications.dart';
import 'package:core/services/notification.send.service.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
class FlutterLocalNotificationsSendService extends NotificationSendService {
final RxInt nid = 0.obs;
final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
final Subject<Notification> _notifications$ = BehaviorSubject<Notification>();
final Subject<String?> _selectedNotifications$ = BehaviorSubject<String?>();
Future<void> initAsync() async {
const initializationSettingsAndroid = AndroidInitializationSettings('@mipmap/logo');
const initializationSettingsLinux = LinuxInitializationSettings(
defaultActionName: 'Open notification',
);
var initializationSettingsDarwin = DarwinInitializationSettings(
onDidReceiveLocalNotification: (id, title, body, payload) {
_notifications$.add(Notification(id: id, title: title, body: body, payload: payload));
},
);
var initializationSettings = InitializationSettings(
android: initializationSettingsAndroid,
iOS: initializationSettingsDarwin,
macOS: initializationSettingsDarwin,
linux: initializationSettingsLinux,
);
await _flutterLocalNotificationsPlugin.initialize(
initializationSettings,
onDidReceiveNotificationResponse: (notificationResponse) {
switch (notificationResponse.notificationResponseType) {
case NotificationResponseType.selectedNotification:
_selectedNotifications$.add(notificationResponse.payload);
break;
case NotificationResponseType.selectedNotificationAction:
_selectedNotifications$.add(notificationResponse.payload);
break;
}
},
);
}
@override
Future<void> send(String title, [String? body, String? payload]) async {
nid.value += 1;
const androidDetails = AndroidNotificationDetails(
'abp-flutter',
'abp-flutter');
const details = NotificationDetails(
android: androidDetails,
);
await _flutterLocalNotificationsPlugin.show(
nid.value,
title,
body,
details,
payload: payload);
}
}