当前位置:   article > 正文

Flutter本地通知:通知给你的应用增光加彩_flutter_local_notifications

flutter_local_notifications

嗨!这里是甜瓜看代码

今天这篇文章我们聊聊在flutter中借助flutter_local_notifications实现本地通知。本文使用的版本是14.0.0+2,后续版本api可能会发生变更,读者请配合源码注释使用。

安装

  首先,让我们通过在你的pubspec.yaml文件中添加以下依赖项来安装flutter_local_notifications

dependencies:
  flutter_local_notifications: ^14.0.0+2
  • 1
  • 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',
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

  在上面的示例中,我们首先创建了一个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',
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

  在这个示例中,我们创建了一个BigTextStyleInformation对象,并传递了一些参数,如通知标题、通知内容和摘要文本。这个样式将使通知在展示时更加吸引人,同时保留了足够的空间来显示较长的消息内容。

  你还可以尝试其他样式选项,例如BigPictureStyleInformation来展示大图像,或者ProgressBarStyleInformation来显示进度条。

总结

  现在你已经了解了如何使用flutter_local_notifications库在Flutter应用中发送本地通知。我们一起探索了如何发送简单的通知、调整通知的外观。希望本文能对你提供一些帮助。这里是甜瓜看代码,期待你的关注!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/493914
推荐阅读
相关标签
  

闽ICP备14008679号