Rain/lib/app/utils/notification.dart

43 lines
1.2 KiB
Dart
Raw Normal View History

2023-06-17 20:57:57 +03:00
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
2023-09-08 18:55:26 +03:00
import 'package:rain/app/controller/controller.dart';
2023-06-17 20:57:57 +03:00
import 'package:rain/main.dart';
import 'package:timezone/timezone.dart' as tz;
class NotificationShow {
Future showNotification(
int id,
String title,
String body,
DateTime date,
2023-09-07 16:49:26 +03:00
String icon,
2023-06-17 20:57:57 +03:00
) async {
2023-09-08 18:55:26 +03:00
final imagePath = await WeatherController().getLocalImagePath(icon);
2023-06-17 20:57:57 +03:00
AndroidNotificationDetails androidNotificationDetails =
2023-09-07 16:49:26 +03:00
AndroidNotificationDetails(
2023-06-17 20:57:57 +03:00
'Rain',
'DARK NIGHT',
2023-09-09 21:15:47 +03:00
priority: Priority.high,
2023-06-17 20:57:57 +03:00
importance: Importance.max,
2023-07-26 22:20:30 +03:00
playSound: false,
enableVibration: false,
2023-09-08 18:55:26 +03:00
largeIcon: FilePathAndroidBitmap(imagePath),
2023-06-17 20:57:57 +03:00
);
NotificationDetails notificationDetails =
NotificationDetails(android: androidNotificationDetails);
var scheduledTime = tz.TZDateTime.from(date, tz.local);
flutterLocalNotificationsPlugin.zonedSchedule(
id,
title,
body,
scheduledTime,
notificationDetails,
uiLocalNotificationDateInterpretation:
UILocalNotificationDateInterpretation.absoluteTime,
androidScheduleMode: AndroidScheduleMode.exactAllowWhileIdle,
2023-09-08 18:55:26 +03:00
payload: imagePath,
2023-06-17 20:57:57 +03:00
);
}
}