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应用中发送本地通知。我们一起探索了如何发送简单的通知、调整通知的外观。希望本文能对你提供一些帮助。这里是甜瓜看代码,期待你的关注!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值