|
|
- import 'package:flutter/material.dart';
- import 'package:flutter_local_notifications/flutter_local_notifications.dart';
- import 'package:flutter_native_timezone/flutter_native_timezone.dart';
- import 'package:get/get.dart';
- import 'package:sqflite_pust_local_notification/models/task_model.dart';
- import 'package:sqflite_pust_local_notification/ui/notified_screen.dart';
- import 'package:timezone/data/latest.dart' as tz;
- import 'package:timezone/timezone.dart' as tz;
-
- import '../utils/assets_string.dart';
-
- class NotifyHelper {
- FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
- FlutterLocalNotificationsPlugin(); //
-
- initializeNotification() async {
- _configureLocalTimezone();
- final IOSInitializationSettings initializationSettingsIOS =
- IOSInitializationSettings(
- requestSoundPermission: false,
- requestBadgePermission: false,
- requestAlertPermission: false,
- onDidReceiveLocalNotification: onDidReceiveLocalNotification);
-
- final AndroidInitializationSettings initializationSettingsAndroid =
- AndroidInitializationSettings("appicon");
-
- final InitializationSettings initializationSettings =
- InitializationSettings(
- iOS: initializationSettingsIOS,
- android: initializationSettingsAndroid,
- );
- await flutterLocalNotificationsPlugin.initialize(initializationSettings,
- onSelectNotification: selectNotification);
- }
-
- // Requeste Permission for IOS
- void requestIOSPermissions() {
- flutterLocalNotificationsPlugin
- .resolvePlatformSpecificImplementation<
- IOSFlutterLocalNotificationsPlugin>()
- ?.requestPermissions(
- alert: true,
- badge: true,
- sound: true,
- );
- }
-
- // displayNotification(
- // {required int id, required String title, required String body}) async {
- // print("doing test");
- // var androidPlatformChannelSpecifics = new AndroidNotificationDetails(
- // 'your channel id',
- // 'your channel name',
- // channelDescription: '',
- // importance: Importance.max,
- // priority: Priority.high,
- // );
-
- // var iOSPlatformChannelSpecifics = new IOSNotificationDetails();
- // var platformChannelSpecifics = new NotificationDetails(
- // android: androidPlatformChannelSpecifics,
- // iOS: iOSPlatformChannelSpecifics);
-
- // await flutterLocalNotificationsPlugin.show(
- // id, title, body, platformChannelSpecifics,
- // payload: "${title}|" + "${body}|");
- // }
-
- displayNotification({required String title, required String body}) async {
- print("doing test");
- var androidPlatformChannelSpecifics = new AndroidNotificationDetails(
- 'your channel id', 'your channel name',
- channelDescription: '',
- importance: Importance.max,
- priority: Priority.high);
-
- var iOSPlatformChannelSpecifics = new IOSNotificationDetails();
- var platformChannelSpecifics = new NotificationDetails(
- android: androidPlatformChannelSpecifics,
- iOS: iOSPlatformChannelSpecifics);
-
- await flutterLocalNotificationsPlugin.show(
- 0,
- title,
- body,
- platformChannelSpecifics,
- payload: title,
- );
- }
-
- scheduledNotification(int hours, int minutes, TaskModel taskModel) async {
- print("Call Notification");
- await flutterLocalNotificationsPlugin.zonedSchedule(
- taskModel.id!.toInt(),
- taskModel.title,
- taskModel.note,
- _convertTimeDeration(hours, minutes),
- //tz.TZDateTime.now(tz.local).add(const Duration(seconds: 5)),
- const NotificationDetails(
- android: AndroidNotificationDetails(
- 'your channel id', 'your channel name',
- channelDescription: '')),
- androidAllowWhileIdle: true,
- uiLocalNotificationDateInterpretation:
- UILocalNotificationDateInterpretation.absoluteTime,
- matchDateTimeComponents: DateTimeComponents.time,
- payload: "${taskModel.title}|" + "${taskModel.note}|");
- }
-
- tz.TZDateTime _convertTimeDeration(int hours, int minutes) {
- final tz.TZDateTime now = tz.TZDateTime.now(tz.local);
- print(now);
- tz.TZDateTime scheduleDate =
- tz.TZDateTime(tz.local, now.year, now.month, now.day, hours, minutes);
-
- if (scheduleDate.isBefore(now)) {
- scheduleDate = scheduleDate.add(const Duration(days: 1));
- }
- print(scheduleDate);
- return scheduleDate;
- }
-
- Future<void> _configureLocalTimezone() async {
- tz.initializeTimeZones();
- final String timeZone = await FlutterNativeTimezone.getLocalTimezone();
- tz.setLocalLocation(tz.getLocation(timeZone));
- }
-
- Future onDidReceiveLocalNotification(
- int id, String? title, String? body, String? payload) async {
- Get.dialog(Text("Welcome to Flutter"));
- }
-
- Future selectNotification(String? payload) async {
- if (payload != null) {
- print('notification payload: $payload');
- } else {
- print("Notification Done");
- }
- if (payload == "Theme Change" || payload == "Add Task") {
- } else {
- Get.to(() => NotifiedScreen(lable: payload));
- }
- }
- }
|