赞
踩
嗨!这里是甜瓜看代码。
今天这篇文章我们聊聊在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应用中发送本地通知。我们一起探索了如何发送简单的通知、调整通知的外观。希望本文能对你提供一些帮助。这里是甜瓜看代码,期待你的关注!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。