Flutter + AlarmManager = ⏰

Flutter + AlarmManager = ⏰

Flutter + AlarmManager = ⏰_第1张图片

原文 https://medium.com/flutter-co...

前言

Flutter + AlarmManager = ⏰_第2张图片

如果您是一名 Android 开发人员,当您希望将应用程序安排在将来的特定时间运行时,可以使用 AlarmManager。如果你是一个 iOS 开发者,这种类型的组件并不存在。

如果你是一个 Flutter 开发者,你会怎么做?

像大多数与 Flutter 相关的事情一样,当您想要使用特定于平台的组件时,您需要公开它的功能。

AlarmManager 也不例外。

本文将介绍 Android AlarmManager Plus 包,并展示如何在应用程序中使用它。

准备好设闹钟了吗?

正文

Setup 设置

  • 打开 pubspec.yaml 文件并添加以下内容:
dependencies:
  android_alarm_manager_plus: ^2.0.6
Something 免责声明 → 撰写本文时,最新版本是 2.0.6
  • 运行 pub get下载依赖项

我们将使用您在 Android Studio 中创建 Flutter 项目时获得的普通项目(减去所有计数器逻辑)。

  • 打开 AndroidManifest.xml 文件并添加以下权限:




  • 在您的应用程序标签中,添加以下内容:



    
        
    

最后,你的 AndroidManifest 文件应该是这样的:



    
    
    
    

   
        
            
            
            
                
                
            
        
        
        
       
       
       
           
               
           
       
    
AndroidManifest.xml

Alarm Bells Are Ringing

该包公开了一个 AndroidAlarmManager 对象,该对象具有以下(相关)方法:

  • oneShot : 一次性触发警报
  • oneShotAt : 在特定日期触发一次性警报
  • periodic : 在规定的时间间隔内触发警报

让我们详细讨论每个选项。

OneShot 方法接受以下参数:

 static Future oneShot(
    Duration delay,
    int id,
    Function callback, {
    bool alarmClock = false,
    bool allowWhileIdle = false,
    bool exact = false,
    bool wakeup = false,
    bool rescheduleOnReboot = false,
  })
oneShot method

前三个参数(延迟、 id 和 callback)是不言自明的,因此我们将关注其余的。

  • AlarmClock - 一个标志,指示计时器是否将与 Android 的 AlarmManagerCompact.setAlarmClock 一起设置
  • AllowWhileIdle - 一个标志,指示计时器是否将用 AlarmManagerCompat.setExactAndAllowWhildle 或 AlarmManagerCompat.setAndAllowWhileIdle 设置
  • Sec - 指示是否使用 AlarmManagerCompat.setExact 设置计时器的标志
  • wakeup - 一个标志,表明如果设备将被唤醒时,警报将被触发
  • rescheduleOnReboot - 一个标志,表明如果警报将持续之间的设备重新启动

OneShotAt 方法与 oneShot 方法非常相似,只有一个关键字不同。第一个参数是一个 DateTime 对象,该对象设置警报触发的时间,而不是持续时间类型的延迟。

static Future oneShotAt(
    DateTime time,
    int id,
    Function callback, {
    bool alarmClock = false,
    bool allowWhileIdle = false,
    bool exact = false,
    bool wakeup = false,
    bool rescheduleOnReboot = false,
  })

periodic 方法接受下参数:

static Future periodic(
    Duration duration,
    int id,
    Function callback, {
    DateTime? startAt,
    bool allowWhileIdle = false,
    bool exact = false,
    bool wakeup = false,
    bool rescheduleOnReboot = false,
  })

正如您所看到的,这个方法在它接受的参数中也是类似的。这里最重要的论点是:

  • StartAt : 指示第一次触发警报的时间
  • duration : 负责每隔一段时间重新触发警报。

记得设置闹钟

关于 Alarm Manager Plus 包需要注意的一点是,它使用隔离程序来运行警报。隔离类似于线程,只是它们不共享内存。因此,它们与信息交流。

因此,您必须将警报处理程序(callback)声明为静态的,以便可以访问它们。

你可以在这里了解更多关于 isolates 的信息。

代码

https://github.com/ducafecat/...

结束语

如果本文对你有帮助,请转发让更多的朋友阅读。

也许这个操作只要你 3 秒钟,对我来说是一个激励,感谢。

祝你有一个美好的一天~


© 猫哥

本文由mdnice多平台发布

你可能感兴趣的:(程序员)