Flutter 如何在flatter应用程序的后台运行代码?
我正在开发一个颤振应用程序。我一天中有很多时间,我想在任何时候都显示一个警报通知,如果应用程序正在运行,我还想更改它的UI 因此,我寻找我有什么选择,我发现以下Flutter 如何在flatter应用程序的后台运行代码?,flutter,timer,scheduled-tasks,alarmmanager,background-task,Flutter,Timer,Scheduled Tasks,Alarmmanager,Background Task,我正在开发一个颤振应用程序。我一天中有很多时间,我想在任何时候都显示一个警报通知,如果应用程序正在运行,我还想更改它的UI 因此,我寻找我有什么选择,我发现以下 类似于flatterworkmanager和background\u fetch的插件 带通道的本机代码实现 我的问题是: 哪个选项最适合我的用例 实施按持续时间延迟的时间计数器或使用报警管理器更好吗 如何在后台任务和我的应用程序之间传递数据(当前时间),以便更新UI PS:目前我们对一个至少适用于Android的解决方案感兴趣 我
- 类似于flatterworkmanager和background\u fetch的插件
- 带通道的本机代码实现
PS:目前我们对一个至少适用于Android的解决方案感兴趣 我认为你不需要后台任务来显示通知。对你的任务来说,使用足够了。您可以使用此插件为特定日期时间安排通知。在应用程序内部,您可以使用在特定日期时间触发。我将向您展示一个简单的示例:
class\u HomePageState扩展状态{
flutlocalnotificationspluginnotifplugin;
@凌驾
void initState(){
super.initState();
notifPlugin=flatterLocalNotificationsPlugin();
}
Future scheduleNotification(DateTime DateTime,字符串标题)异步{
final now=DateTime.now();
if(dateTime.isBefore(现在)){
//日期时间过去了
返回;
}
最终差异=日期时间差异(现在);
计时器(差,(){
显示对话框(
context:this.context,
生成器:(上下文){
返回警报对话框(
内容:正文(标题),
);
}
);
});
wait notifPlugin.schedule(title.hashCode,title,title,dateTime,platformChannelSpecifics,payload:'test');
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(),
正文:安全区(
子:容器()
),
浮动操作按钮:生成器(
生成器:(上下文){
返回浮动操作按钮(
已按下:(){
最终snackbar=snackbar(内容:文本(“计划通知”),持续时间:持续时间(秒数:3));
脚手架.of(上下文).showSnackBar(snackbar);
scheduleNotification(DateTime.now().add(持续时间(秒:2)),“Hello”);
},
);
}
),
);
}
}
但是如果你需要做一些计算或者数据提取,那么背景提取就是你所需要的。唯一的问题是苹果在大多数情况下不允许后台任务。你需要后台任务做什么?如果您只需要显示通知,则可以在应用程序运行时安排特定日期时间,而不使用后台任务。@Igorkharkhordin我需要安排任务并显示通知,即使应用程序不运行(例如推送通知,但在本地)。如果应用程序在某个时间运行,我需要用当前时间更新UI。感谢您的示例,但我需要的是一个独立于应用程序的任务,该任务负责在应用程序关闭时显示通知。此任务将从服务器获取时间(每天),然后计划当天的通知(按照您的建议使用flutt_local_通知)。@C.Mahfoud您是否尝试过使用background_fetch或flutt workmanager?尝试使用其中任何一种——它们包装的是相同的本机api,因此它们之间没有太大区别。