????
This commit is contained in:
parent
eec578b9c8
commit
a057d91493
|
@ -1,4 +1,7 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
||||||
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
<application
|
<application
|
||||||
android:label="hrt"
|
android:label="hrt"
|
||||||
android:name="${applicationName}"
|
android:name="${applicationName}"
|
||||||
|
|
|
@ -1,6 +1,22 @@
|
||||||
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||||
|
import 'package:timezone/data/latest.dart';
|
||||||
|
import 'package:timezone/timezone.dart';
|
||||||
|
|
||||||
void sendNotification() async {
|
const details = NotificationDetails(
|
||||||
|
android: AndroidNotificationDetails(
|
||||||
|
'hrt',
|
||||||
|
'HRT',
|
||||||
|
autoCancel: false,
|
||||||
|
styleInformation: BigPictureStyleInformation(
|
||||||
|
DrawableResourceAndroidBitmap('take_your_hrt'),
|
||||||
|
),
|
||||||
|
importance: Importance.max,
|
||||||
|
ongoing: true,
|
||||||
|
actions: [AndroidNotificationAction("confirmation", "Done!")],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
void _initializePlugin() async {
|
||||||
var initialized = await FlutterLocalNotificationsPlugin().initialize(
|
var initialized = await FlutterLocalNotificationsPlugin().initialize(
|
||||||
const InitializationSettings(
|
const InitializationSettings(
|
||||||
android: AndroidInitializationSettings('estrogen'),
|
android: AndroidInitializationSettings('estrogen'),
|
||||||
|
@ -10,23 +26,60 @@ void sendNotification() async {
|
||||||
if (initialized != true) {
|
if (initialized != true) {
|
||||||
throw "Not initialized";
|
throw "Not initialized";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sendNotification() async {
|
||||||
|
_initializePlugin();
|
||||||
await FlutterLocalNotificationsPlugin().show(
|
await FlutterLocalNotificationsPlugin().show(
|
||||||
1,
|
1,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
const NotificationDetails(
|
details,
|
||||||
android: AndroidNotificationDetails(
|
);
|
||||||
'hrt',
|
}
|
||||||
'HRT',
|
|
||||||
autoCancel: false,
|
void scheduleNotification() async {
|
||||||
styleInformation: BigPictureStyleInformation(
|
_initializePlugin();
|
||||||
DrawableResourceAndroidBitmap('take_your_hrt'),
|
initializeTimeZones();
|
||||||
),
|
|
||||||
importance: Importance.max,
|
// [Hours, Minutes]
|
||||||
ongoing: true,
|
var times = [
|
||||||
actions: [AndroidNotificationAction("confirmation", "Done!")],
|
[12, 00],
|
||||||
),
|
[18, 00],
|
||||||
),
|
];
|
||||||
|
|
||||||
|
if (times.isEmpty) return;
|
||||||
|
|
||||||
|
var currentTime = TZDateTime.now(local);
|
||||||
|
|
||||||
|
// Map the time entries to TZDateTime objects
|
||||||
|
var notificationTimes = times
|
||||||
|
.map((item) => TZDateTime(
|
||||||
|
local,
|
||||||
|
currentTime.year,
|
||||||
|
currentTime.month,
|
||||||
|
currentTime.day,
|
||||||
|
item[0],
|
||||||
|
item[1],
|
||||||
|
))
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
// For all entries in the past, add 1 day
|
||||||
|
for (var time in notificationTimes
|
||||||
|
.where((element) => element.compareTo(currentTime) < 0)) {
|
||||||
|
time.add(const Duration(days: 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort the array so we can find the closest time
|
||||||
|
notificationTimes.sort((a, b) => a.compareTo(b));
|
||||||
|
|
||||||
|
await FlutterLocalNotificationsPlugin().zonedSchedule(
|
||||||
|
1,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
notificationTimes[0],
|
||||||
|
details,
|
||||||
|
uiLocalNotificationDateInterpretation:
|
||||||
|
UILocalNotificationDateInterpretation.absoluteTime,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue