|
|
- import 'package:flutter/material.dart';
- import 'package:flutter_local_notifications/flutter_local_notifications.dart';
- import 'package:get/get.dart';
- import 'package:timezone/data/latest.dart' as tz;
- import 'package:timezone/timezone.dart' as tz;
-
- class NotifyHelper {
- FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
- FlutterLocalNotificationsPlugin(); //
-
- initializeNotification() async {
- tz.initializeTimeZones();
- 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 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: 'Default_Sound',
- );
- }
-
- scheduledNotification() async {
- await flutterLocalNotificationsPlugin.zonedSchedule(
- 0,
- 'scheduled title',
- 'theme changes 5 seconds ago',
- 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);
- }
-
- Future onDidReceiveLocalNotification(
- int id, String? title, String? body, String? payload) async {
- // display a dialog with the notification details, tap ok to go to another page
- // showDialog(
- // //context: context,
- // builder: (BuildContext context) => CupertinoAlertDialog(
- // title: Text(title),
- // content: Text(body),
- // actions: [
- // CupertinoDialogAction(
- // isDefaultAction: true,
- // child: Text('Ok'),
- // onPressed: () async {
- // Navigator.of(context, rootNavigator: true).pop();
- // await Navigator.push(
- // context,
- // MaterialPageRoute(
- // builder: (context) => SecondScreen(payload),
- // ),
- // );
- // },
- // )
- // ],
- // ),
- // );
- Get.dialog(Text("Welcome to Flutter"));
- }
-
- Future selectNotification(String? payload) async {
- if (payload != null) {
- print('notification payload: $payload');
- } else {
- print("Notification Done");
- }
- Get.to(() => Container(
- color: Colors.white,
- ));
- }
- }
|