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?