当前位置:   article > 正文

Flutter发送系统通知(flutter_local_notifications)

flutter_local_notifications

Hello, I’m Shendi

整了好久,记录一下

引入库

# 系统通知插件
flutter_local_notifications: ^9.1.5
  • 1
  • 2

在 dart 中导入

import 'package:flutter_local_notifications/flutter_local_notifications.dart';
  • 1

初始化

首先需要创建通知插件

final FlutterLocalNotificationsPlugin np = FlutterLocalNotificationsPlugin();
  • 1

然后初始化 Android、IOS的设置

/// 这里的参数为Android通知的图标路径-必须,其中 @mipmap 对应android app->src->main->res->mipmap 文件夹
var android = const AndroidInitializationSettings("@mipmap/logo");
var ios = const IOSInitializationSettings();

np.initialize(InitializationSettings(android: android, iOS: ios));
  • 1
  • 2
  • 3
  • 4
  • 5

构建通知描述

var androidDetails = const AndroidNotificationDetails(
    'id 描述',
    '名称描述',
    importance: Importance.max,
    priority: Priority.high
);
var iosDetails = const IOSNotificationDetails();
var details = NotificationDetails(
    android: androidDetails,
    iOS: iosDetails
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

发送/显示通知

// 显示通知
// 第一个参数是id,id如果一致则会覆盖之前的通知
// 第二个参数是通知标题
// 第三个参数通知内容,最后一个参数为上面步骤的描述
np.show(DateTime.now().millisecondsSinceEpoch >> 10, title, body, details);
  • 1
  • 2
  • 3
  • 4
  • 5

完成代码/封装

/// 通知封装
/// author Shendi
class Notification {

  final FlutterLocalNotificationsPlugin np = FlutterLocalNotificationsPlugin();

  /// 是否初始化了
  var isInit = false;

  /// 初始化
  void init() {
    if (isInit) return;
    isInit = true;

    var android = const AndroidInitializationSettings("@mipmap/logo");
    var ios = const IOSInitializationSettings();

    np.initialize(InitializationSettings(android: android, iOS: ios));
  }

  void send(String title, String body) {
    // 初始化
    init();

    // 构建描述
    var androidDetails = const AndroidNotificationDetails(
        'id描述',
        '名称描述',
        importance: Importance.max,
        priority: Priority.high
    );
    var iosDetails = const IOSNotificationDetails();
    var details = NotificationDetails(
        android: androidDetails,
        iOS: iosDetails
    );

    // 显示通知, 第一个参数是id,id如果一致则会覆盖之前的通知
    np.show(DateTime.now().millisecondsSinceEpoch >> 10, title, body, details);
  }

}
var notification = Notification();
  • 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

将上面代码拷贝到项目内,使用 notification.send(通知标题,通知内容); 来发送通知

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

闽ICP备14008679号