admin管理员组文章数量:1355542
I'm encountering an issue with scheduled notifications in my Flutter application using the flutter_local_notifications package. While immediate notifications function correctly, scheduled notifications do not appear as expected. There are no errors or warnings in the debug console.
- flutter_local_notifications Version: ^19.0.0
- Platform: Android 10
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_timezone/flutter_timezone.dart';
import 'package:timezone/timezone.dart' as tz;
import 'package:timezone/data/latest.dart' as tz;
class NotificationService {
final notificationsPlugin = FlutterLocalNotificationsPlugin();
bool _isInitialized = false;
bool get isInitialized => _isInitialized;
// Initialize
Future<void> initNotification() async {
if (_isInitialized) return;
// Initialize timezone
tz.initializeTimeZones();
final String currentTimeZone = await FlutterTimezone.getLocalTimezone();
tz.setLocalLocation(tz.getLocation(currentTimeZone));
print("Device Timezone: $currentTimeZone");
const initSettingsAndroid =
AndroidInitializationSettings('@mipmap/ic_launcher');
const initSettings = InitializationSettings(android: initSettingsAndroid);
await notificationsPlugin.initialize(initSettings);
_isInitialized = true;
}
// Notification Detail
NotificationDetails notificationDetails() {
return NotificationDetails(
android: AndroidNotificationDetails(
'daily_channel_id',
'Daily Notifications',
channelDescription: 'Daily notifications for the app',
importance: Importance.max,
priority: Priority.high,
),
);
}
// Show Notifications
Future<void> showNotifications({
int id = 0,
String? title,
String? body,
}) async {
return notificationsPlugin.show(
id,
title,
body,
notificationDetails(),
);
}
// Schedule a notification at a specified time (hour: 0-23, min: 0-59)
Future<void> scheduleNotification({
int id = 1,
required String title,
required String body,
required int hour,
required int minute,
}) async {
// Get the current date/time in device's local timezone
final now = tz.TZDateTime.now(tz.local);
print("Current Time (TZ): $now");
// Create a date time for today at the specified hour and minute
var scheduledDate = tz.TZDateTime(
tz.local,
now.year,
now.month,
now.day,
hour,
minute,
);
print("Scheduled Time (Before Adjustment): $scheduledDate");
// Ensure scheduled time is in the future
if (scheduledDate.isBefore(now)) {
scheduledDate = scheduledDate.add(Duration(days: 1));
print("Scheduled Time Adjusted to Next Day: $scheduledDate");
}
// Schedule the notification
await notificationsPlugin.zonedSchedule(
id,
title,
body,
scheduledDate,
notificationDetails(),
androidScheduleMode: AndroidScheduleMode.inexactAllowWhileIdle,
matchDateTimeComponents: DateTimeComponents.dateAndTime,
);
print("Final Scheduled Time: $scheduledDate");
}
// Cancel all notifications
Future<void> cancelAllNotifications() async {
await notificationsPlugin.cancelAll();
}
}
- Trigger immediate notifications using the showNotifications method, which works as intended.
- Despite calling the scheduleNotification method and observing the printed scheduled times in the console, the notifications do not appear at the specified times.
- Confirmed that the device's time zone is correctly identified and set using the flutter_timezone and timezone packages.
- Inserted print statements to verify the current time and the calculated scheduled time. The logs indicate that the scheduled times are computed correctly.
- Verified that the application has the necessary permissions to display notifications. Since the target device is running Android 10, no additional permissions are required for scheduling exact alarms.
- Checked and ensured that battery optimization settings are not restricting the application's background processes.
版权声明:本文标题:android - Flutter Scheduled Notifications Not Working with flutter_local_notifications Plugin - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1743962863a2569351.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论