Flutter本地通知:通知给你的应用增光加彩
嗨!这里是甜瓜看代码。
今天这篇文章我们聊聊在flutter中借助flutter_local_notifications实现本地通知。本文使用的版本是14.0.0+2,后续版本api可能会发生变更,读者请配合源码注释使用。
安装
首先,让我们通过在你的pubspec.yaml
文件中添加以下依赖项来安装flutter_local_notifications
:
dependencies:
flutter_local_notifications: ^14.0.0+2
运行flutter pub get
以获取最新的依赖项。
让通知动起来
好了,我们现在已经准备好使用flutter_local_notifications了。首先,给你展示如何发送一个简单的通知:
通知信息来源...
// 在应用程序启动时初始化通知设置
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('@mipmap/push_small');
const DarwinInitializationSettings darwinInitializationSettings =
DarwinInitializationSettings();
const InitializationSettings initializationSettings =
InitializationSettings(
android: initializationSettingsAndroid,
iOS: darwinInitializationSettings);
await flutterLocalNotificationsPlugin.initialize(
initializationSettings,
onDidReceiveNotificationResponse:
(NotificationResponse notificationResponse) {
switch (notificationResponse.notificationResponseType) {
case NotificationResponseType.selectedNotification:
print(
'NotificationResponseType.selectedNotification:被点击了${notificationResponse.payload}');
Get.toNamed(AppRoutes.myPersonalInformation);
break;
case NotificationResponseType.selectedNotificationAction:
print('NotificationResponseType.selectedNotificationAction:被点击了');
break;
}
},
);
// 发送通知
const AndroidNotificationDetails androidPlatformChannelSpecifics =
AndroidNotificationDetails(
'your channel id',
'your channel name',
importance: Importance.max,
priority: Priority.high,
showWhen: false,
);
const DarwinNotificationDetails iosDetails =
DarwinNotificationDetails();
var details = const NotificationDetails(
android: androidPlatformChannelSpecifics, iOS: iosDetails);
await flutterLocalNotificationsPlugin.show(
0,
msg['title'],
msg['payload'],
details,
payload: 'item x',
);
在上面的示例中,我们首先创建了一个FlutterLocalNotificationsPlugin
实例并进行初始化设置。然后,我们定义了一个AndroidNotificationDetails
对象,其中包含了一些通知的设置,例如重要性、优先级等。最后,我们调用show
方法来发送通知。
这只是一个简单的示例,你可以根据自己的需求进行更多的定制。你可以设置通知的图标代码中@mipmap/push_small是你原生代码res-mipmap中通知图标、声音、振动等等。你还可以为不同的通知类型创建不同的通道(channel),以便更好地管理它们。
调整通知的外观
现在,让我们来看看如何定制通知的外观。flutter_local_notifications提供了许多选项来改变通知的外观,包括设置大文本样式、大图像样式、进度条等等。
下面是一个例子,展示了如何使用大文本样式来创建一个有趣的通知:
const BigTextStyleInformation bigTextStyleInformation =
BigTextStyleInformation(
'君不见黄河之水天上来,奔流到海不复回。君不见高堂明镜悲白发,朝如青丝暮成雪。人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。烹羊宰牛且为乐,会须一饮三百杯。岑夫子,丹丘生,将进酒,杯莫停。与君歌一曲,请君为我倾耳听。钟鼓馔玉不足贵,但愿长醉不复醒。古来圣贤皆寂寞,惟有饮者留其名。陈王昔时宴平乐,斗酒十千恣欢谑。主人何为言少钱,径须沽取对君酌。五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。',
htmlFormatBigText: true,
contentTitle: '通知标题',
htmlFormatContentTitle: true,
summaryText: '有趣的通知',
htmlFormatSummaryText: true,
);
// 发送通知
const AndroidNotificationDetails androidPlatformChannelSpecifics =
AndroidNotificationDetails(
'your channel id',
'your channel name',
importance: Importance.max,
priority: Priority.high,
showWhen: false,
styleInformation: bigTextStyleInformation,
);
const DarwinNotificationDetails iosDetails =
DarwinNotificationDetails();
var details = const NotificationDetails(
android: androidPlatformChannelSpecifics, iOS: iosDetails);
await flutterLocalNotificationsPlugin.show(
0,
msg['title'],
msg['payload'],
details,
payload: 'item x',
);
在这个示例中,我们创建了一个
BigTextStyleInformation
对象,并传递了一些参数,如通知标题、通知内容和摘要文本。这个样式将使通知在展示时更加吸引人,同时保留了足够的空间来显示较长的消息内容。
你还可以尝试其他样式选项,例如BigPictureStyleInformation
来展示大图像,或者ProgressBarStyleInformation
来显示进度条。
总结
现在你已经了解了如何使用flutter_local_notifications库在Flutter应用中发送本地通知。我们一起探索了如何发送简单的通知、调整通知的外观。希望本文能对你提供一些帮助。这里是甜瓜看代码,期待你的关注!
转载自:https://juejin.cn/post/7234322338825633849