Flutter 后台闹钟触发
一个 Flutter 插件,用于在特定时间从后台启动应用程序,就像 Android 的原生闹钟应用程序一样
安装
flutter_alarm_background_trigger: ^1.0.0
# or
flutter pub add flutter_alarm_background_trigger
初始化
void main() {
// Very important to call before initialize since it
// ensures the binding is available and ready before
// any native call
WidgetsFlutterBinding.ensureInitialized();
// initialize Required for alarm events to bind with flutter method channel
FlutterAlarmBackgroundTrigger.initialize();
runApp(const MyApp());
}
创建实例
var alarmPlugin = FlutterAlarmBackgroundTrigger();
设置闹钟
alarmPlugin.addAlarm(
// Required
DateTime.now().add(Duration(seconds: 10)),
//Optional
uid: "YOUR_APP_ID_TO_IDENTIFY",
payload: {"YOUR_EXTRA_DATA":"FOR_ALARM"},
// screenWakeDuration: For how much time you want
// to make screen awake when alarm triggered
screenWakeDuration: Duration(minutes: 1)
)
闹钟触发时接收事件
alarmPlugin.requestPermission().then((isGranted){
if(isGranted){
alarmPlugin.onForegroundAlarmEventHandler((alarm){
// Perform your action here such as navigation
// This event will be triggered on both cases,
// when app is in foreground or background!
print(alarm.id)
})
}
})
附加方法
请求在其他应用程序之上绘制的权限
Future<bool> requestPermission()
添加
Future<AlarmItem> addAlarm(
DateTime time,
{
String? uid,
Map<String, dynamic>? payload,
Duration screenWakeDuration
}
)
按 UID 获取闹钟
Future<List<AlarmItem>> getAlarmByUid(String uid)
获取所有已安排的闹钟
Future<List<AlarmItem>> getAllAlarms()
获取单个闹钟
Future<AlarmItem> getAlarm(int id)
按负载获取闹钟
Future<List<AlarmItem>> getAlarmByPayload(Map<String, dynamic> payload)
按时间获取闹钟
Future<List<AlarmItem>> getAlarmByTime(DateTime time)
闹钟触发事件
void onForegroundAlarmEventHandler(OnForegroundAlarmEvent alarmEvent)
删除单个闹钟
Future<void> deleteAlarm(int id)
按负载删除
Future<void> deleteAlarmsByPayload(Map<String, dynamic> payload)
按时间删除
Future<void> deleteAlarmsByTime(DateTime dateTime)
按 UID 删除
Future<void> deleteAlarmsByUid(String uid)
删除所有已安排的闹钟
Future<void> deleteAllAlarms()