Dart 语言 flutter_local_notifications 示例

Dart阿木 发布于 2025-06-19 5 次阅读


Flutter Local Notifications:实现本地通知的Dart编程指南

在Flutter应用开发中,本地通知是一个非常有用的功能,它可以帮助开发者提醒用户在特定时间执行某些操作,或者通知用户某些重要事件。`flutter_local_notifications`库是Flutter社区中一个流行的库,用于实现本地通知功能。本文将围绕这个库,通过一系列示例代码,详细介绍如何在Flutter应用中集成和使用本地通知。

`flutter_local_notifications`库允许你创建、调度和取消本地通知。这些通知可以在用户不在应用界面时显示,从而提供更好的用户体验。以下是一些使用这个库时需要了解的关键点:

- 支持Android和iOS平台

- 可以设置通知的标题、内容、图标、声音等属性

- 支持定时通知和一次性通知

- 可以通过插件API与原生代码交互

安装flutter_local_notifications库

你需要在你的Flutter项目中添加`flutter_local_notifications`库。可以通过以下命令安装:

dart

flutter pub add flutter_local_notifications


配置Android和iOS平台

在Android和iOS平台上,你需要进行一些额外的配置才能使本地通知工作。

Android配置

在Android项目中,你需要在`AndroidManifest.xml`文件中添加以下权限:

xml

<uses-permission android:name="android.permission.VIBRATE" />


<uses-permission android:name="android.permission.WAKE_LOCK" />


<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />


你需要在`AndroidManifest.xml`中声明一个`BroadcastReceiver`来接收系统启动完成后的广播:

xml

<receiver android:name=".ExampleReceiver">


<intent-filter>


<action android:name="android.intent.action.BOOT_COMPLETED" />


</intent-filter>


</receiver>


确保你的`ExampleReceiver`类实现了`onReceive`方法。

iOS配置

在iOS项目中,你需要在`Info.plist`文件中添加以下键值对:

xml

<key>UIBackgroundModes</key>


<array>


<string>audio</string>


<string>fetch</string>


<string>remote-notification</string>


</array>


创建通知

在Flutter中,你可以使用`FlutterLocalNotificationsPlugin`类来创建通知。以下是一个简单的示例,展示如何创建一个基本的通知:

dart

import 'package:flutter/material.dart';


import 'package:flutter_local_notifications/flutter_local_notifications.dart';

void main() {


runApp(MyApp());


}

class MyApp extends StatelessWidget {


@override


Widget build(BuildContext context) {


return MaterialApp(


home: Scaffold(


appBar: AppBar(


title: Text('Local Notifications Example'),


),


body: Center(


child: ElevatedButton(


onPressed: () async {


var androidPlatformChannelSpecifics = AndroidNotificationDetails(


'your channel id',


'your channel name',


'your channel description',


importance: Importance.max,


priority: Priority.high,


showWhen: false,


);


var iOSPlatformChannelSpecifics = IOSNotificationDetails();


var platformChannelSpecifics = NotificationDetails(


android: androidPlatformChannelSpecifics,


iOS: iOSPlatformChannelSpecifics,


);

await flutterLocalNotificationsPlugin.show(


0,


'Basic Notification',


'A basic local notification!',


platformChannelSpecifics,


payload: 'item x',


);


},


child: Text('Show Notification'),


),


),


),


);


}


}


在这个例子中,我们创建了一个按钮,当用户点击这个按钮时,会显示一个标题为“Basic Notification”,内容为“A basic local notification!”的通知。

调度通知

除了显示一次性通知,你还可以使用`schedule`方法来调度通知。以下是一个示例,展示如何调度一个定时通知:

dart

import 'package:flutter/material.dart';


import 'package:flutter_local_notifications/flutter_local_notifications.dart';

void main() {


runApp(MyApp());


}

class MyApp extends StatelessWidget {


@override


Widget build(BuildContext context) {


return MaterialApp(


home: Scaffold(


appBar: AppBar(


title: Text('Scheduled Notifications Example'),


),


body: Center(


child: ElevatedButton(


onPressed: () async {


var scheduledNotificationDateTime = DateTime.now().add(Duration(seconds: 5));

var androidPlatformChannelSpecifics = AndroidNotificationDetails(


'your channel id',


'your channel name',


'your channel description',


importance: Importance.max,


priority: Priority.high,


showWhen: false,


);


var iOSPlatformChannelSpecifics = IOSNotificationDetails();


var platformChannelSpecifics = NotificationDetails(


android: androidPlatformChannelSpecifics,


iOS: iOSPlatformChannelSpecifics,


);

await flutterLocalNotificationsPlugin.schedule(


0,


'Scheduled Notification',


'This is a scheduled notification!',


scheduledNotificationDateTime,


platformChannelSpecifics,


payload: 'item x',


);


},


child: Text('Schedule Notification'),


),


),


),


);


}


}


在这个例子中,当用户点击按钮时,应用会调度一个5秒后显示的通知。

取消通知

如果你需要取消一个已经调度或显示的通知,可以使用`cancel`方法。以下是一个示例:

dart

await flutterLocalNotificationsPlugin.cancel(0);


在这个例子中,`0`是通知的ID,你可以通过`show`或`schedule`方法获取这个ID。

总结

`flutter_local_notifications`库为Flutter开发者提供了一个简单而强大的方式来实现本地通知。通过上述示例,我们了解了如何创建、调度和取消通知。在实际应用中,你可以根据需要调整通知的属性,如标题、内容、图标、声音等,以提供更好的用户体验。

在开发过程中,请确保遵循平台特定的配置要求,以便本地通知能够正常工作。通过使用`flutter_local_notifications`库,你可以轻松地将本地通知功能集成到你的Flutter应用中。