Flutter alarm_android_manager_plus not showing my notification?

14 Views Asked by At

everyone I'm using android_alarm_manager_plus 4.0.1 with flutter_local_notification. I'm trying to show an alarm notification at a specific time that the user will select, but my emulator not showing the notification I don't know what I'm missing Can anyone help me, please??

my alarm class:

class AlarmManagerSerive {
  Future<void> init() async {
    await AndroidAlarmManager.initialize();
  }

  static DateTime parseDateString(String dateString) {
    DateFormat format = DateFormat('MMM dd, yyyy');
    return format.parse(dateString);
  }

  void setAlarm() async {
    try {
      Map<String, dynamic> notificationDetails =
          Storage().box.read("notification_details");
      int helloAlarmID = notificationDetails['id'];
      log(notificationDetails['name']);
      var parsedDate = parseDateString(notificationDetails['reminderdate']);
      int hour = int.parse(notificationDetails['remindertime'].split(':')[0]);
      int min = int.parse(notificationDetails['remindertime'].split(':')[1]);
      String type = notificationDetails['type'];
      if (Platform.isAndroid) {
        if (type == "Once") {
          await AndroidAlarmManager.oneShotAt(
            DateTime(
              parsedDate.year,
              parsedDate.month,
              parsedDate.day,
              hour,
              min,
            ),
            helloAlarmID,
            printHello,
            exact: true,
            wakeup: true,
            allowWhileIdle: true,
            alarmClock: true,
            params: notificationDetails,
          );
        } else {
          await AndroidAlarmManager.periodic(
            const Duration(days: 1),
            helloAlarmID,
            printHello,
            startAt: DateTime(
              parsedDate.year,
              parsedDate.month,
              parsedDate.day,
              hour,
              min,
            ),
            exact: true,
            wakeup: true,
            allowWhileIdle: true,
            params: notificationDetails,
          );
        }
      }
    } catch (e) {
      log(e.toString());
    }
  }

  @pragma('vm:entry-point')
  static void printHello(id, notificationDetails) async {
    try {
      final DateTime now = DateTime.now();
      final int isolateId = Isolate.current.hashCode;
      // ignore: unnecessary_brace_in_string_interps, avoid_print
      print("[$now] Hello, world! isolate=${isolateId}");

      await LocalNotificationServices.showBasicNotification(
        notificationDetails?['id'],
        notificationDetails?['name'],
        notificationDetails?['describtion'],
      );
      log(notificationDetails['name']);
      performDatabaseUpdate(notificationDetails['id']);
      LocalNotificationServices.cancelNotification(notificationDetails['id']);
      AndroidAlarmManager.cancel(notificationDetails['id']);
    } catch (e) {
      log(e.toString());
    }
    log("notific");
  }

it should work as I'm getting my log correct

D/CompatibilityChangeReporter(31550): Compat change id reported: 194532703; UID 10191; state: ENABLED
D/CompatibilityChangeReporter(31550): Compat change id reported: 253665015; UID 10191; state: DISABLED
I/flutter (31550): [2024-03-27 22:28:00.142080] Hello, world! isolate=1012637609
[log] Once 1
[GETX] Instance "ReminderController" has been created
[GETX] Instance "ReminderController" has been initialized
[log] notific
[log] Reminder updated successfully
[log] Database Updated

and my manifest file

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<uses-permission android:name="android.permission.USE_EXACT_ALARM" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />

    <service android:name="dev.fluttercommunity.plus.androidalarmmanager.AlarmService" android:permission="android.permission.BIND_JOB_SERVICE" android:exported="false"/>
    <receiver android:name="dev.fluttercommunity.plus.androidalarmmanager.AlarmBroadcastReceiver" android:exported="false"/>
    <receiver android:name="dev.fluttercommunity.plus.androidalarmmanager.RebootBroadcastReceiver" android:enabled="false" android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

    <receiver android:exported="false" android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />
    <receiver android:exported="false" android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
            <action android:name="android.intent.action.QUICKBOOT_POWERON" />
            <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
        </intent-filter>
    </receiver>

is there anything I have missed?

0

There are 0 best solutions below