如何解决Flutter 本地通知插件:createNotificationChannel 函数不起作用
我正在尝试使用 Flutter_local_notifications: ^5.0.0+4
创建一个 android 通知频道
把它看起来不像应该的那样工作。
我使用 getNotificationChannels
编写了一个代码来验证频道是否创建成功
请看我的代码
Future<void> _getNotificationChannels() async {
await FlutterlocalnotificationsPlugin.resolvePlatformSpecificImplementation<
AndroidFlutterlocalnotificationsPlugin>()?.createNotificationChannel(AndroidNotificationChannel(
'high_importance_channel',// id
'High Importance Notifications',// title
'This channel is used for important notifications',// description
importance: Importance.max,));
final Widget notificationChannelsDialogContent =
await _getNotificationChannelsDialogContent();
await showDialog<void>(
context: context,builder: (BuildContext context) => AlertDialog(
content: notificationChannelsDialogContent,actions: <Widget>[
TextButton(
onpressed: () {
Navigator.of(context).pop();
},child: const Text('OK'),),],);
}
Future<Widget> _getNotificationChannelsDialogContent() async {
try {
final List<AndroidNotificationChannel>? channels =
await FlutterlocalnotificationsPlugin
.resolvePlatformSpecificImplementation<
AndroidFlutterlocalnotificationsPlugin>()!
.getNotificationChannels();
return Container(
width: double.maxFinite,child: ListView(
children: <Widget>[
const Text(
'Notifications Channels',style: TextStyle(fontWeight: FontWeight.bold),const Divider(color: Colors.black),if (channels?.isEmpty ?? true)
const Text('No notification channels')
else
for (AndroidNotificationChannel channel in channels!)
Column(
crossAxisAlignment: CrossAxisAlignment.start,children: <Widget>[
Text('id: ${channel.id}\n'
'name: ${channel.name}\n'
'description: ${channel.description}\n'
'groupId: ${channel.groupId}\n'
'importance: ${channel.importance.value}\n'
'playSound: ${channel.playSound}\n'
'sound: ${channel.sound?.sound}\n'
'enableVibration: ${channel.enableVibration}\n'
'vibrationPattern: ${channel.vibrationPattern}\n'
'showBadge: ${channel.showBadge}\n'
'enableLights: ${channel.enableLights}\n'
'ledColor: ${channel.ledColor}\n'),);
} on PlatformException catch (error) {
return Text(
'Error calling "getNotificationChannels"\n'
'code: ${error.code}\n'
'message: ${error.message}',);
}
}
如您所见,我使用 createNotificationChannel
创建通知频道,然后我使用 getNotificationChannels
查看频道是否已成功创建。
我总是在对话框中收到“没有通知渠道”的消息。 我不知道我的代码有什么问题,
感谢您的帮助
解决方法
问题是我用于测试的 Android 版本, 通知渠道是一个特定于 Android 8 或更新版本的概念,这就是为什么 API 文档声明创建渠道的方法仅适用于这些版本的 Android
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。