Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在flatter应用程序的后台运行代码?_Flutter_Timer_Scheduled Tasks_Alarmmanager_Background Task - Fatal编程技术网

Flutter 如何在flatter应用程序的后台运行代码?

Flutter 如何在flatter应用程序的后台运行代码?,flutter,timer,scheduled-tasks,alarmmanager,background-task,Flutter,Timer,Scheduled Tasks,Alarmmanager,Background Task,我正在开发一个颤振应用程序。我一天中有很多时间,我想在任何时候都显示一个警报通知,如果应用程序正在运行,我还想更改它的UI 因此,我寻找我有什么选择,我发现以下 类似于flatterworkmanager和background\u fetch的插件 带通道的本机代码实现 我的问题是: 哪个选项最适合我的用例 实施按持续时间延迟的时间计数器或使用报警管理器更好吗 如何在后台任务和我的应用程序之间传递数据(当前时间),以便更新UI PS:目前我们对一个至少适用于Android的解决方案感兴趣 我

我正在开发一个颤振应用程序。我一天中有很多时间,我想在任何时候都显示一个警报通知,如果应用程序正在运行,我还想更改它的UI

因此,我寻找我有什么选择,我发现以下

  • 类似于flatterworkmanagerbackground\u fetch的插件
  • 带通道的本机代码实现
我的问题是:

  • 哪个选项最适合我的用例
  • 实施按持续时间延迟的时间计数器或使用报警管理器更好吗
  • 如何在后台任务和我的应用程序之间传递数据(当前时间),以便更新UI

  • 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,因此它们之间没有太大区别。