【发布时间】:2021-08-03 20:04:29
【问题描述】:
我想在特定时间执行一个功能,但要在应用关闭时执行。该函数将显示一个通知。
这是我要执行的功能:
Future<void> dailyNotification() async {
DateTime now= DateTime.now();
Time reviewTime = Time(13, 02, 20 );
DateTime notTime = DateTime(now.year, now.month, now.day, reviewTime.hour, reviewTime.minute, reviewTime.second);
var androidChannelSpecifics = AndroidNotificationDetails(
'CHANNEL_ID 2',
'CHANNEL_NAME 2',
"CHANNEL_DESCRIPTION 2",
importance: Importance.max,
priority: Priority.high,
);
var iosChannelSpecifics = IOSNotificationDetails();
var platformChannelSpecifics =
NotificationDetails(android: androidChannelSpecifics, iOS: iosChannelSpecifics);
await flutterLocalNotificationsPlugin.zonedSchedule(
2,
'Test Title at ${reviewTime.hour}:${reviewTime.minute}.${reviewTime.second}',
'Test Body', //null
notTime,
platformChannelSpecifics,
payload: 'Test Payload',
);
}
编辑:
根据 Tirth Patel 在帖子中的建议,我已经这样实现了:
void callbackDispatcher() {
Workmanager().executeTask((taskName, inputData) async {
notificationPlugin.showDailyAtTime();
return Future.value(true);
});
}
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Workmanager().initialize(callbackDispatcher);
Workmanager().registerPeriodicTask(
"1",
"simplePeriodicTask",
frequency: Duration(minutes: 15),
);
runApp(MyApp());
}
但是,它仍然不起作用。我正在使用颤振本地通知包。
我还不能解决这个问题。
请帮帮我。
感谢您的回复。
【问题讨论】:
-
这能回答你的问题吗? How to schedule background tasks in Flutter?
-
感谢您的回复@TirthPatel 我已使用 workmanager 将代码作为您分享的问题中的第一个解决方案实现。它不工作。请帮忙。
-
您没有调用 registerPeriodicTask 或 registerOneOffTask。检查这个:github.com/fluttercommunity/…
-
我在调用函数后更新了问题。
-
我没有在您的代码中阅读 showDailyAtTime(此功能已弃用)(我假设它是通知插件的一部分),您可能不需要 workmanager。检查这个:pub.dev/documentation/flutter_local_notifications/latest/…
标签: android flutter dart flutter-local-notification