// import 'dart:ffi';
// import 'dart:io';

// import 'package:flutter/cupertino.dart';
// import 'package:flutter/foundation.dart';
// import 'package:flutter/material.dart';
// import 'package:flutter_timezone/flutter_timezone.dart';
// import 'package:flutter_local_notifications/flutter_local_notifications.dart';
// import 'package:timezone/timezone.dart' as tz;
// import 'package:timezone/data/latest_all.dart' as tz;
// import 'package:together_mobile/notification_api.dart';

// int id = 0;

// /// A notification action which triggers a url launch event
// const String urlLaunchActionId = 'id_1';

// /// A notification action which triggers a App navigation event
// const String navigationActionId = 'id_3';

// Future<void> main() async {
//   // needed if you intend to initialize in `main` function
//   WidgetsFlutterBinding.ensureInitialized();

//   final NotificationAppLaunchDetails? notificationAppLaunchDetails = !kIsWeb &&
//           Platform.isLinux
//       ? null
//       : await flutterLocalNotificationsPlugin.getNotificationAppLaunchDetails();

//   // initialize android setting
//   const AndroidInitializationSettings initializationSettingsAndroid =
//       AndroidInitializationSettings('app_icon');

//   // IOS notification category
//   final List<DarwinNotificationCategory> darwinNotificationCategories = [
//     DarwinNotificationCategory(
//       darwinNotificationCategoryText,
//       actions: [
//         DarwinNotificationAction.text(
//           'text_1',
//           'Action 1',
//           buttonTitle: 'Send',
//           placeholder: 'Placeholder',
//         ),
//       ],
//     ),
//     DarwinNotificationCategory(
//       darwinNotificationCategoryPlain,
//       actions: <DarwinNotificationAction>[
//         DarwinNotificationAction.plain('id_1', 'Action 1'),
//         DarwinNotificationAction.plain(
//           'id_2',
//           'Action 2 (destructive)',
//           options: <DarwinNotificationActionOption>{
//             DarwinNotificationActionOption.destructive,
//           },
//         ),
//         DarwinNotificationAction.plain(
//           navigationActionId,
//           'Action 3 (foreground)',
//           options: <DarwinNotificationActionOption>{
//             DarwinNotificationActionOption.foreground,
//           },
//         ),
//         DarwinNotificationAction.plain(
//           'id_4',
//           'Action 4 (auth required)',
//           options: <DarwinNotificationActionOption>{
//             DarwinNotificationActionOption.authenticationRequired,
//           },
//         ),
//       ],
//       options: <DarwinNotificationCategoryOption>{
//         DarwinNotificationCategoryOption.hiddenPreviewShowTitle,
//       },
//     ),
//   ];

//   // Initialize IOS setting
//   final DarwinInitializationSettings initializationSettingsDarwin =
//       DarwinInitializationSettings(
//     requestAlertPermission: false,
//     requestBadgePermission: false,
//     requestSoundPermission: false,
//     onDidReceiveLocalNotification: (id, title, body, payload) async {
//       didReceiveLocalNotificationStream.add(
//         ReceivedNotification(
//           id: id,
//           title: title,
//           body: body,
//           payload: payload,
//         ),
//       );
//     },
//     notificationCategories: darwinNotificationCategories,
//   );

//   final LinuxInitializationSettings initializationSettingsLinux =
//       LinuxInitializationSettings(
//     defaultActionName: 'Open notification',
//     defaultIcon: AssetsLinuxIcon('icons/app_icon.png'),
//   );

//   // Initialize notification setting,
//   final InitializationSettings initializationSettings = InitializationSettings(
//     android: initializationSettingsAndroid,
//     iOS: initializationSettingsDarwin,
//     macOS: initializationSettingsDarwin,
//     linux: initializationSettingsLinux,
//   );

//   await flutterLocalNotificationsPlugin.initialize(
//     initializationSettings,
//     onDidReceiveNotificationResponse:
//         (NotificationResponse notificationResponse) {
//       switch (notificationResponse.notificationResponseType) {
//         case NotificationResponseType.selectedNotification:
//           selectNotificationStream.add(notificationResponse.payload);
//           break;
//         case NotificationResponseType.selectedNotificationAction:
//           if (notificationResponse.actionId == navigationActionId) {
//             selectNotificationStream.add(notificationResponse.payload);
//           }
//           break;
//       }
//     },
//     onDidReceiveBackgroundNotificationResponse: notificationTapBackground,
//   );

//   String initialRoute = HomePage.routeName;

//   runApp(
//     MaterialApp(
//       initialRoute: initialRoute,
//       routes: <String, WidgetBuilder>{
//         HomePage.routeName: (_) => HomePage(notificationAppLaunchDetails),
//         SecondPage.routeName: (_) => SecondPage(selectedNotificationPayload),
//       },
//     ),
//   );
// }

// Future<void> _configureLocalTimeZone() async {
//   if (kIsWeb || Platform.isLinux) {
//     return;
//   }
//   tz.initializeTimeZones();
//   final String timeZoneName = await FlutterTimezone.getLocalTimezone();
//   tz.setLocalLocation(tz.getLocation(timeZoneName));
// }

// class PaddedElevatedButton extends StatelessWidget {
//   const PaddedElevatedButton({
//     required this.buttonText,
//     required this.onPressed,
//     Key? key,
//   }) : super(key: key);

//   final String buttonText;
//   final VoidCallback onPressed;

//   @override
//   Widget build(BuildContext context) => Padding(
//         padding: const EdgeInsets.fromLTRB(0, 0, 0, 8),
//         child: ElevatedButton(
//           onPressed: onPressed,
//           child: Text(buttonText),
//         ),
//       );
// }

// class HomePage extends StatefulWidget {
//   const HomePage(this.notificationAppLaunchDetails, {Key? key})
//       : super(key: key);

//   static String routeName = '/';

//   final NotificationAppLaunchDetails? notificationAppLaunchDetails;

//   bool get didNotificationLaunchApp =>
//       notificationAppLaunchDetails?.didNotificationLaunchApp ?? false;

//   @override
//   State<HomePage> createState() => _HomePageState();
// }

// class _HomePageState extends State<HomePage> {
//   bool _notificationsEnabled = false;

//   @override
//   void initState() {
//     super.initState();
//     _isAndroidPermissionGranted();
//     _requestPermissions();
//     _configureDidReceiveLocalNotificationSubject();
//     _configureSelectNotificationSubject();
//   }

//   Future<void> _isAndroidPermissionGranted() async {
//     if (Platform.isAndroid) {
//       final bool granted = await flutterLocalNotificationsPlugin
//               .resolvePlatformSpecificImplementation<
//                   AndroidFlutterLocalNotificationsPlugin>()
//               ?.areNotificationsEnabled() ??
//           false;

//       setState(() {
//         _notificationsEnabled = granted;
//       });
//     }
//   }

//   Future<void> _requestPermissions() async {
//     if (Platform.isIOS || Platform.isMacOS) {
//       await flutterLocalNotificationsPlugin
//           .resolvePlatformSpecificImplementation<
//               IOSFlutterLocalNotificationsPlugin>()
//           ?.requestPermissions(
//             alert: true,
//             badge: true,
//             sound: true,
//           );

//       await flutterLocalNotificationsPlugin
//           .resolvePlatformSpecificImplementation<
//               MacOSFlutterLocalNotificationsPlugin>()
//           ?.requestPermissions(
//             alert: true,
//             badge: true,
//             sound: true,
//           );
//     } else if (Platform.isAndroid) {
//       final AndroidFlutterLocalNotificationsPlugin? androidImplementation =
//           flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation<
//               AndroidFlutterLocalNotificationsPlugin>();

//       final bool? granted = await androidImplementation?.requestPermission();

//       setState(() {
//         _notificationsEnabled = granted ?? false;
//       });
//     }
//   }

//   // configure the action when a notification is tapped
//   void _configureDidReceiveLocalNotificationSubject() {
//     didReceiveLocalNotificationStream.stream
//         .listen((ReceivedNotification receivedNotification) async {
//       await showDialog(
//         context: context,
//         builder: (BuildContext context) => CupertinoAlertDialog(
//           title: receivedNotification.title != null
//               ? Text(receivedNotification.title!)
//               : null,
//           content: receivedNotification.body != null
//               ? Text(receivedNotification.body!)
//               : null,
//           actions: <Widget>[
//             CupertinoDialogAction(
//               isDefaultAction: true,
//               onPressed: () async {
//                 Navigator.of(context, rootNavigator: true).pop();
//                 await Navigator.of(context).push(
//                   MaterialPageRoute<void>(
//                     builder: (BuildContext context) =>
//                         SecondPage(receivedNotification.payload),
//                   ),
//                 );
//               },
//               child: const Text('Ok'),
//             )
//           ],
//         ),
//       );
//     });
//   }

//   void _configureSelectNotificationSubject() {
//     selectNotificationStream.stream.listen((String? payload) async {
//       await Navigator.of(context).push(MaterialPageRoute<void>(
//         builder: (BuildContext context) => SecondPage(payload),
//       ));
//     });
//   }

//   @override
//   Widget build(BuildContext context) {
//     return Scaffold(
//       appBar: AppBar(
//         title: const Text('Notifications Example'),
//       ),
//       body: SingleChildScrollView(
//         child: Padding(
//           padding: EdgeInsets.all(8),
//           child: Center(
//             child: Column(
//               children: [
//                 const Padding(
//                   padding: EdgeInsets.zero,
//                   child: Text(
//                       'Tap on a Notification when it appears to trigger navigation'),
//                 ),
//                 _InfoValueString(
//                   title: 'Did notification launch app?',
//                   value: widget.didNotificationLaunchApp,
//                 ),
//                 if (widget.didNotificationLaunchApp) ...<Widget>[
//                   const Text('Launch notification details'),
//                   _InfoValueString(
//                     title: 'Notification id',
//                     value: widget
//                         .notificationAppLaunchDetails!.notificationResponse?.id,
//                   ),
//                   _InfoValueString(
//                     title: 'Action id',
//                     value: widget.notificationAppLaunchDetails!
//                         .notificationResponse?.actionId,
//                   ),
//                   _InfoValueString(
//                     title: 'Input',
//                     value: widget.notificationAppLaunchDetails!
//                         .notificationResponse?.input,
//                   ),
//                   _InfoValueString(
//                     title: 'Payload:',
//                     value: widget.notificationAppLaunchDetails!
//                         .notificationResponse?.payload,
//                   ),
//                   PaddedElevatedButton(
//                     buttonText: 'Show plain notification with payload',
//                     onPressed: () async {
//                       await _showNotification();
//                     },
//                   ),
//                   PaddedElevatedButton(
//                     buttonText:
//                         'Show plain notification that has no title with '
//                         'payload',
//                     onPressed: () async {
//                       await _showNotificationWithNoTitle();
//                     },
//                   ),
//                   PaddedElevatedButton(
//                     buttonText: 'Show plain notification that has no body with '
//                         'payload',
//                     onPressed: () async {
//                       await _showNotificationWithNoBody();
//                     },
//                   ),
//                   PaddedElevatedButton(
//                     buttonText: 'Show notification with custom sound',
//                     onPressed: () async {
//                       await _showNotificationCustomSound();
//                     },
//                   ),
//                   if (kIsWeb || !Platform.isLinux) ...<Widget>[
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Schedule notification to appear in 5 seconds '
//                           'based on local time zone',
//                       onPressed: () async {
//                         await _zonedScheduleNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Schedule notification to appear in 5 seconds '
//                           'based on local time zone using alarm clock',
//                       onPressed: () async {
//                         await _zonedScheduleAlarmClockNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Repeat notification every minute',
//                       onPressed: () async {
//                         await _repeatNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Schedule daily 10:00:00 am notification in your '
//                           'local time zone',
//                       onPressed: () async {
//                         await _scheduleDailyTenAMNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Schedule daily 10:00:00 am notification in your '
//                           "local time zone using last year's date",
//                       onPressed: () async {
//                         await _scheduleDailyTenAMLastYearNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Schedule weekly 10:00:00 am notification in your '
//                           'local time zone',
//                       onPressed: () async {
//                         await _scheduleWeeklyTenAMNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Schedule weekly Monday 10:00:00 am notification '
//                           'in your local time zone',
//                       onPressed: () async {
//                         await _scheduleWeeklyMondayTenAMNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Check pending notifications',
//                       onPressed: () async {
//                         await _checkPendingNotificationRequests();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Get active notifications',
//                       onPressed: () async {
//                         await _getActiveNotifications();
//                       },
//                     ),
//                   ],
//                   PaddedElevatedButton(
//                     buttonText:
//                         'Schedule monthly Monday 10:00:00 am notification in '
//                         'your local time zone',
//                     onPressed: () async {
//                       await _scheduleMonthlyMondayTenAMNotification();
//                     },
//                   ),
//                   PaddedElevatedButton(
//                     buttonText:
//                         'Schedule yearly Monday 10:00:00 am notification in '
//                         'your local time zone',
//                     onPressed: () async {
//                       await _scheduleYearlyMondayTenAMNotification();
//                     },
//                   ),
//                   PaddedElevatedButton(
//                     buttonText: 'Show notification with no sound',
//                     onPressed: () async {
//                       await _showNotificationWithNoSound();
//                     },
//                   ),
//                   PaddedElevatedButton(
//                     buttonText: 'Cancel latest notification',
//                     onPressed: () async {
//                       await _cancelNotification();
//                     },
//                   ),
//                   PaddedElevatedButton(
//                     buttonText: 'Cancel all notifications',
//                     onPressed: () async {
//                       await _cancelAllNotifications();
//                     },
//                   ),
//                   const Divider(),
//                   const Text(
//                     'Notifications with actions',
//                     style: TextStyle(fontWeight: FontWeight.bold),
//                   ),
//                   PaddedElevatedButton(
//                     buttonText: 'Show notification with plain actions',
//                     onPressed: () async {
//                       await _showNotificationWithActions();
//                     },
//                   ),
//                   if (!Platform.isLinux)
//                     PaddedElevatedButton(
//                       buttonText: 'Show notification with text action',
//                       onPressed: () async {
//                         await _showNotificationWithTextAction();
//                       },
//                     ),
//                   if (!Platform.isLinux)
//                     PaddedElevatedButton(
//                       buttonText: 'Show notification with text choice',
//                       onPressed: () async {
//                         await _showNotificationWithTextChoice();
//                       },
//                     ),
//                   const Divider(),
//                   if (Platform.isAndroid) ...<Widget>[
//                     const Text(
//                       'Android-specific examples',
//                       style: TextStyle(fontWeight: FontWeight.bold),
//                     ),
//                     Text('notifications enabled: $_notificationsEnabled'),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Check if notifications are enabled for this app',
//                       onPressed: _areNotifcationsEnabledOnAndroid,
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Request permission (API 33+)',
//                       onPressed: () => _requestPermissions(),
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show plain notification with payload and update '
//                           'channel description',
//                       onPressed: () async {
//                         await _showNotificationUpdateChannelDescription();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show plain notification as public on every '
//                           'lockscreen',
//                       onPressed: () async {
//                         await _showPublicNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show notification with custom vibration pattern, '
//                           'red LED and red icon',
//                       onPressed: () async {
//                         await _showNotificationCustomVibrationIconLed();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show notification using Android Uri sound',
//                       onPressed: () async {
//                         await _showSoundUriNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show notification that times out after 3 seconds',
//                       onPressed: () async {
//                         await _showTimeoutNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show insistent notification',
//                       onPressed: () async {
//                         await _showInsistentNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show big picture notification using local images',
//                       onPressed: () async {
//                         await _showBigPictureNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show big picture notification using base64 String '
//                           'for images',
//                       onPressed: () async {
//                         await _showBigPictureNotificationBase64();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show big picture notification using URLs for '
//                           'Images',
//                       onPressed: () async {
//                         await _showBigPictureNotificationURL();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show big picture notification, hide large icon '
//                           'on expand',
//                       onPressed: () async {
//                         await _showBigPictureNotificationHiddenLargeIcon();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show media notification',
//                       onPressed: () async {
//                         await _showNotificationMediaStyle();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show big text notification',
//                       onPressed: () async {
//                         await _showBigTextNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show inbox notification',
//                       onPressed: () async {
//                         await _showInboxNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show messaging notification',
//                       onPressed: () async {
//                         await _showMessagingNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show grouped notifications',
//                       onPressed: () async {
//                         await _showGroupedNotifications();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show notification with tag',
//                       onPressed: () async {
//                         await _showNotificationWithTag();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Cancel notification with tag',
//                       onPressed: () async {
//                         await _cancelNotificationWithTag();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show ongoing notification',
//                       onPressed: () async {
//                         await _showOngoingNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show notification with no badge, alert only once',
//                       onPressed: () async {
//                         await _showNotificationWithNoBadge();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show progress notification - updates every second',
//                       onPressed: () async {
//                         await _showProgressNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show indeterminate progress notification',
//                       onPressed: () async {
//                         await _showIndeterminateProgressNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show notification without timestamp',
//                       onPressed: () async {
//                         await _showNotificationWithoutTimestamp();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show notification with custom timestamp',
//                       onPressed: () async {
//                         await _showNotificationWithCustomTimestamp();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show notification with custom sub-text',
//                       onPressed: () async {
//                         await _showNotificationWithCustomSubText();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show notification with chronometer',
//                       onPressed: () async {
//                         await _showNotificationWithChronometer();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show full-screen notification',
//                       onPressed: () async {
//                         await _showFullScreenNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show notification with number if the launcher '
//                           'supports',
//                       onPressed: () async {
//                         await _showNotificationWithNumber();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show notification with sound controlled by '
//                           'alarm volume',
//                       onPressed: () async {
//                         await _showNotificationWithAudioAttributeAlarm();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Create grouped notification channels',
//                       onPressed: () async {
//                         await _createNotificationChannelGroup();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Delete notification channel group',
//                       onPressed: () async {
//                         await _deleteNotificationChannelGroup();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Create notification channel',
//                       onPressed: () async {
//                         await _createNotificationChannel();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Delete notification channel',
//                       onPressed: () async {
//                         await _deleteNotificationChannel();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Get notification channels',
//                       onPressed: () async {
//                         await _getNotificationChannels();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Start foreground service',
//                       onPressed: () async {
//                         await _startForegroundService();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Start foreground service with blue background '
//                           'notification',
//                       onPressed: () async {
//                         await _startForegroundServiceWithBlueBackgroundNotification();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Stop foreground service',
//                       onPressed: () async {
//                         await _stopForegroundService();
//                       },
//                     ),
//                   ],
//                   if (!kIsWeb &&
//                       (Platform.isIOS || Platform.isMacOS)) ...<Widget>[
//                     const Text(
//                       'iOS and macOS-specific examples',
//                       style: TextStyle(fontWeight: FontWeight.bold),
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Request permission',
//                       onPressed: _requestPermissions,
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show notification with subtitle',
//                       onPressed: () async {
//                         await _showNotificationWithSubtitle();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show notification with icon badge',
//                       onPressed: () async {
//                         await _showNotificationWithIconBadge();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show notification with attachment (with thumbnail)',
//                       onPressed: () async {
//                         await _showNotificationWithAttachment(
//                             hideThumbnail: false);
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show notification with attachment (no thumbnail)',
//                       onPressed: () async {
//                         await _showNotificationWithAttachment(
//                             hideThumbnail: true);
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show notification with attachment (clipped thumbnail)',
//                       onPressed: () async {
//                         await _showNotificationWithClippedThumbnailAttachment();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show notifications with thread identifier',
//                       onPressed: () async {
//                         await _showNotificationsWithThreadIdentifier();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show notification with time sensitive interruption '
//                           'level',
//                       onPressed: () async {
//                         await _showNotificationWithTimeSensitiveInterruptionLevel();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText: 'Show notification with banner but not in '
//                           'notification centre',
//                       onPressed: () async {
//                         await _showNotificationWithBannerNotInNotificationCentre();
//                       },
//                     ),
//                     PaddedElevatedButton(
//                       buttonText:
//                           'Show notification in notification centre only',
//                       onPressed: () async {
//                         await _showNotificationInNotificationCentreOnly();
//                       },
//                     ),
//                   ],
//                 ],
//               ],
//             ),
//           ),
//         ),
//       ),
//     );
//   }

//   // show single plain notification
//   Future<void> _showNotification() async {
//     const AndroidNotificationDetails androidNotificationDetails =
//         AndroidNotificationDetails(
//       'your channel id',
//       'your channel name',
//       channelDescription: 'your channel description',
//       importance: Importance.max,
//       priority: Priority.high,
//       ticker: 'ticker',
//     );

//     const NotificationDetails notificationDetails =
//         NotificationDetails(android: androidNotificationDetails);

//     await flutterLocalNotificationsPlugin.show(
//         id++, 'plain title', 'plain body', notificationDetails,
//         payload: 'item x');
//   }

//   // show notification with plain actions
//   Future<void> _showNotificationWithActions() async {
//     const AndroidNotificationDetails androidNotificationDetails =
//         AndroidNotificationDetails(
//       'your channel id',
//       'your channel name',
//       channelDescription: 'your channel description',
//       importance: Importance.max,
//       priority: Priority.high,
//       ticker: 'ticker',
//       actions: <AndroidNotificationAction>[
//         AndroidNotificationAction(
//           urlLaunchActionId,
//           'Action 1',
//           icon: DrawableResourceAndroidBitmap('food'),
//           contextual: true,
//         ),
//         AndroidNotificationAction(
//           'id_2',
//           'Action 2',
//           titleColor: Color.fromARGB(255, 255, 0, 0),
//           icon: DrawableResourceAndroidBitmap('secondary_icon'),
//         ),
//         AndroidNotificationAction(
//           navigationActionId,
//           'Action 3',
//           icon: DrawableResourceAndroidBitmap('secondary_icon'),
//           showsUserInterface: true,
//           // By default, Android plugin will dismiss the notification when the
//           // user tapped on a action (this mimics the behavior on iOS).
//           cancelNotification: false,
//         ),
//       ],
//     );

//     const DarwinNotificationDetails iosNotificationDetails =
//         DarwinNotificationDetails(
//       categoryIdentifier: darwinNotificationCategoryPlain,
//     );

//     const DarwinNotificationDetails macOSNotificationDetails =
//         DarwinNotificationDetails(
//       categoryIdentifier: darwinNotificationCategoryPlain,
//     );

//     const LinuxNotificationDetails linuxNotificationDetails =
//         LinuxNotificationDetails(
//       actions: <LinuxNotificationAction>[
//         LinuxNotificationAction(
//           key: urlLaunchActionId,
//           label: 'Action 1',
//         ),
//         LinuxNotificationAction(
//           key: navigationActionId,
//           label: 'Action 2',
//         ),
//       ],
//     );

//     const NotificationDetails notificationDetails = NotificationDetails(
//       android: androidNotificationDetails,
//       iOS: iosNotificationDetails,
//       macOS: macOSNotificationDetails,
//       linux: linuxNotificationDetails,
//     );

//     await flutterLocalNotificationsPlugin.show(
//       id++,
//       'plain title',
//       'plain body',
//       notificationDetails,
//       payload: 'item z',
//     );
//   }

//   // show notification with text input action
//   Future<void> _showNotificationWithTextAction() async {
//     const AndroidNotificationDetails androidNotificationDetails =
//         AndroidNotificationDetails(
//       'your channel id',
//       'your channel name',
//       channelDescription: 'your channel description',
//       importance: Importance.max,
//       priority: Priority.high,
//       ticker: 'ticker',
//       actions: [
//         AndroidNotificationAction(
//           'text_id_1',
//           'Enter Text',
//           icon: DrawableResourceAndroidBitmap('food'),
//           inputs: [
//             AndroidNotificationActionInput(label: 'Enter a Message'),
//           ],
//         ),
//       ],
//     );

//     const NotificationDetails notificationDetails =
//         NotificationDetails(android: androidNotificationDetails);

//     await flutterLocalNotificationsPlugin.show(
//       id++,
//       'Text Input Notification',
//       'Expand to see Input action',
//       notificationDetails,
//       payload: 'item x',
//     );
//   }

//   @override
//   void dispose() {
//     didReceiveLocalNotificationStream.close();
//     selectNotificationStream.close();
//     super.dispose();
//   }
// }

// class _InfoValueString extends StatelessWidget {
//   const _InfoValueString({
//     required this.title,
//     required this.value,
//     Key? key,
//   }) : super(key: key);

//   final String title;
//   final Object? value;

//   @override
//   Widget build(BuildContext context) => Padding(
//         padding: const EdgeInsets.fromLTRB(0, 0, 0, 8),
//         child: Text.rich(
//           TextSpan(
//             children: <InlineSpan>[
//               TextSpan(
//                 text: '$title ',
//                 style: const TextStyle(
//                   fontWeight: FontWeight.bold,
//                 ),
//               ),
//               TextSpan(
//                 text: '$value',
//               )
//             ],
//           ),
//         ),
//       );
// }