Flutter闹钟管理插件cfn_alarm的使用
Flutter闹钟管理插件cfn_alarm的使用
cfn_alarm
是一个用于 Flutter 应用程序的闹钟管理插件。目前该插件仅支持 iOS 平台,并且能够实现音频在前台播放的功能。
特性
- 目前仅在 iOS 平台上可用。
- 支持前台音频下载和播放。
接下来,我们通过一个完整的示例来展示如何使用 cfn_alarm
插件。
示例代码
import 'package:cfn_alarm/app_enums.dart';
import 'package:flutter/material.dart';
import 'package:cfn_alarm/cfn_alarm.dart';
import 'package:cfn_alarm/models/alarm_setting.dart';
import 'package:intl/intl.dart';
void main() {
// 确保 Flutter 框架已经初始化
WidgetsFlutterBinding.ensureInitialized();
// 初始化 cfn_alarm 插件
CfnAlarm.init();
// 启动应用程序
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
// 用于显示平台版本信息
String _platformVersion = '未知';
String _platformVersion1 = '未知';
@override
void initState() {
super.initState();
// 初始化回调
initCallBack();
// 初始化平台状态
initPlatformState();
}
/// 设置日期时间格式为 yyyy-MM-dd HH:mm:ss
Future<void> initPlatformState() async {
// 初始化并设置闹钟
var initScheduleAlarm = await CfnAlarm.initScheduleAlarm(
setting: AlarmSetting(
id: 123,
dateTime: DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now().copyWith(second: 0, minute: 6)),
audioPath: "https://samplelib.com/lib/preview/mp3/sample-15s.mp3",
title: "通知",
body: "通知内容",
audioType: AudioType.network,
),
);
// 更新界面状态
setState(() {
_platformVersion = initScheduleAlarm!.toString();
});
}
@override
void dispose() {
// 取消闹钟
CfnAlarm.onCancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Center(
child: Column(
children: [
// 显示当前平台版本信息
Text('运行在: $_platformVersion\n'),
const SizedBox(height: 35),
// 停止调度闹钟按钮
TextButton(
onPressed: () async {
// 移除已设置的闹钟
var initScheduleAlarm = await CfnAlarm.removeScheduleAlarm(id: 123);
// 更新界面状态
setState(() {
_platformVersion1 = initScheduleAlarm!.toString();
});
},
child: Text("停止调度闹钟: $_platformVersion1"),
)
],
),
),
),
);
}
Future<void> initCallBack() async {
// 监听闹钟接收事件
CfnAlarm.onReceived.stream.listen((event) {
// 处理接收到的闹钟事件
});
// 监听闹钟点击事件
CfnAlarm.onTapReceived.stream.listen((event) {
// 处理点击闹钟事件
});
}
}
代码解释
-
初始化插件:
WidgetsFlutterBinding.ensureInitialized(); CfnAlarm.init();
在启动应用之前,确保 Flutter 框架已经初始化,并调用
CfnAlarm.init()
方法初始化插件。 -
设置闹钟:
var initScheduleAlarm = await CfnAlarm.initScheduleAlarm( setting: AlarmSetting( id: 123, dateTime: DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now().copyWith(second: 0, minute: 6)), audioPath: "https://samplelib.com/lib/preview/mp3/sample-15s.mp3", title: "通知", body: "通知内容", audioType: AudioType.network, ), );
使用
CfnAlarm.initScheduleAlarm
方法设置闹钟,参数包括闹钟 ID、日期时间、音频路径等。 -
移除闹钟:
var initScheduleAlarm = await CfnAlarm.removeScheduleAlarm(id: 123);
使用
CfnAlarm.removeScheduleAlarm
方法移除已设置的闹钟。 -
监听闹钟事件:
CfnAlarm.onReceived.stream.listen((event) { // 处理接收到的闹钟事件 }); CfnAlarm.onTapReceived.stream.listen((event) { // 处理点击闹钟事件 });
更多关于Flutter闹钟管理插件cfn_alarm的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter闹钟管理插件cfn_alarm的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
cfn_alarm
是一个用于 Flutter 的闹钟管理插件,允许开发者在 Flutter 应用中轻松设置和管理闹钟。这个插件提供了跨平台的支持,可以在 Android 和 iOS 上使用。以下是关于如何使用 cfn_alarm
插件的基本指南。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 cfn_alarm
插件的依赖:
dependencies:
flutter:
sdk: flutter
cfn_alarm: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在你的 Dart 文件中导入 cfn_alarm
插件:
import 'package:cfn_alarm/cfn_alarm.dart';
3. 设置闹钟
你可以使用 CfnAlarm
类来设置闹钟。以下是一个简单的示例,展示如何设置一个闹钟:
void setAlarm() async {
// 设置闹钟的时间
DateTime alarmTime = DateTime.now().add(Duration(minutes: 1)); // 1分钟后触发
// 设置闹钟
await CfnAlarm.setAlarm(
alarmTime: alarmTime,
alarmTitle: 'My Alarm',
alarmMessage: 'This is my alarm message',
alarmId: 1, // 唯一的闹钟ID
);
print('Alarm set for $alarmTime');
}
4. 取消闹钟
你可以通过 cancelAlarm
方法来取消已经设置的闹钟:
void cancelAlarm() async {
await CfnAlarm.cancelAlarm(alarmId: 1);
print('Alarm canceled');
}
5. 处理闹钟触发
当闹钟触发时,你可以在应用中进行相应的处理。通常,你可以在 main.dart
中监听闹钟触发事件:
void main() {
runApp(MyApp());
// 监听闹钟触发事件
CfnAlarm.onAlarmTriggered.listen((alarmId) {
print('Alarm $alarmId triggered');
// 在这里处理闹钟触发后的逻辑
});
}
6. 权限处理
在 Android 上,设置闹钟需要 SCHEDULE_EXACT_ALARM
权限。你需要在 AndroidManifest.xml
中添加以下权限:
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
在 iOS 上,你需要在 Info.plist
中添加通知权限:
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
<string>voip</string>
</array>
7. 测试
运行你的应用并测试闹钟的设置和触发功能。确保在不同平台上(Android 和 iOS)都能正常工作。
8. 更多功能
cfn_alarm
插件还提供了其他功能,如重复闹钟、自定义铃声等。你可以查看插件的 官方文档 来了解更多详细信息。
示例代码
以下是一个完整的示例代码,展示了如何使用 cfn_alarm
插件设置和取消闹钟:
import 'package:flutter/material.dart';
import 'package:cfn_alarm/cfn_alarm.dart';
void main() {
runApp(MyApp());
// 监听闹钟触发事件
CfnAlarm.onAlarmTriggered.listen((alarmId) {
print('Alarm $alarmId triggered');
// 在这里处理闹钟触发后的逻辑
});
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Alarm Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: setAlarm,
child: Text('Set Alarm'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: cancelAlarm,
child: Text('Cancel Alarm'),
),
],
),
),
),
);
}
void setAlarm() async {
DateTime alarmTime = DateTime.now().add(Duration(minutes: 1)); // 1分钟后触发
await CfnAlarm.setAlarm(
alarmTime: alarmTime,
alarmTitle: 'My Alarm',
alarmMessage: 'This is my alarm message',
alarmId: 1,
);
print('Alarm set for $alarmTime');
}
void cancelAlarm() async {
await CfnAlarm.cancelAlarm(alarmId: 1);
print('Alarm canceled');
}
}