This is flutter sqlite local notification project. User can add task.
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.

117 lines
3.9 KiB

2 years ago
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_local_notifications/flutter_local_notifications.dart';
  3. import 'package:get/get.dart';
  4. import 'package:timezone/data/latest.dart' as tz;
  5. import 'package:timezone/timezone.dart' as tz;
  6. class NotifyHelper {
  7. FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
  8. FlutterLocalNotificationsPlugin(); //
  9. initializeNotification() async {
  10. tz.initializeTimeZones();
  11. final IOSInitializationSettings initializationSettingsIOS =
  12. IOSInitializationSettings(
  13. requestSoundPermission: false,
  14. requestBadgePermission: false,
  15. requestAlertPermission: false,
  16. onDidReceiveLocalNotification: onDidReceiveLocalNotification);
  17. final AndroidInitializationSettings initializationSettingsAndroid =
  18. AndroidInitializationSettings("appicon");
  19. final InitializationSettings initializationSettings =
  20. InitializationSettings(
  21. iOS: initializationSettingsIOS,
  22. android: initializationSettingsAndroid,
  23. );
  24. await flutterLocalNotificationsPlugin.initialize(initializationSettings,
  25. onSelectNotification: selectNotification);
  26. }
  27. // Requeste Permission for IOS
  28. void requestIOSPermissions() {
  29. flutterLocalNotificationsPlugin
  30. .resolvePlatformSpecificImplementation<
  31. IOSFlutterLocalNotificationsPlugin>()
  32. ?.requestPermissions(
  33. alert: true,
  34. badge: true,
  35. sound: true,
  36. );
  37. }
  38. displayNotification({required String title, required String body}) async {
  39. print("doing test");
  40. var androidPlatformChannelSpecifics = new AndroidNotificationDetails(
  41. 'your channel id', 'your channel name',
  42. channelDescription: '',
  43. importance: Importance.max,
  44. priority: Priority.high);
  45. var iOSPlatformChannelSpecifics = new IOSNotificationDetails();
  46. var platformChannelSpecifics = new NotificationDetails(
  47. android: androidPlatformChannelSpecifics,
  48. iOS: iOSPlatformChannelSpecifics);
  49. await flutterLocalNotificationsPlugin.show(
  50. 0,
  51. title,
  52. body,
  53. platformChannelSpecifics,
  54. payload: 'Default_Sound',
  55. );
  56. }
  57. scheduledNotification() async {
  58. await flutterLocalNotificationsPlugin.zonedSchedule(
  59. 0,
  60. 'scheduled title',
  61. 'theme changes 5 seconds ago',
  62. tz.TZDateTime.now(tz.local).add(const Duration(seconds: 5)),
  63. const NotificationDetails(
  64. android: AndroidNotificationDetails(
  65. 'your channel id', 'your channel name',
  66. channelDescription: '')),
  67. androidAllowWhileIdle: true,
  68. uiLocalNotificationDateInterpretation:
  69. UILocalNotificationDateInterpretation.absoluteTime);
  70. }
  71. Future onDidReceiveLocalNotification(
  72. int id, String? title, String? body, String? payload) async {
  73. // display a dialog with the notification details, tap ok to go to another page
  74. // showDialog(
  75. // //context: context,
  76. // builder: (BuildContext context) => CupertinoAlertDialog(
  77. // title: Text(title),
  78. // content: Text(body),
  79. // actions: [
  80. // CupertinoDialogAction(
  81. // isDefaultAction: true,
  82. // child: Text('Ok'),
  83. // onPressed: () async {
  84. // Navigator.of(context, rootNavigator: true).pop();
  85. // await Navigator.push(
  86. // context,
  87. // MaterialPageRoute(
  88. // builder: (context) => SecondScreen(payload),
  89. // ),
  90. // );
  91. // },
  92. // )
  93. // ],
  94. // ),
  95. // );
  96. Get.dialog(Text("Welcome to Flutter"));
  97. }
  98. Future selectNotification(String? payload) async {
  99. if (payload != null) {
  100. print('notification payload: $payload');
  101. } else {
  102. print("Notification Done");
  103. }
  104. Get.to(() => Container(
  105. color: Colors.white,
  106. ));
  107. }
  108. }