当前位置:   article > 正文

Flutter 弹通知栏插件 flutter_local_notifications 教学

flutter_local_notifications

很多情况下我们需要给用户弹通知栏,这个功能在Android中是非常简单的,在FLutter中,也有非常成熟的插件flutter_local_notifications供我们使用,这篇文章主要介绍flutter_local_notifications插件初使用是需要进行的几点配置,希望能帮到大家!

步骤1:在pubspec.yaml文件中添加flutter_local_notifications依赖

 flutter_local_notifications:^0.9.1

步骤2:向您的AndroidManifest.xml 添加VIBRATE和RECEIVE_BOOT_COMPLETED权限[可选]

  1. FlutterApplication and put your custom class here. -->
  2. <uses-permission android:name="android.permission.INTERNET"/>
  3. <uses-permission android:name="android.permission.VIBRATE" />
  4. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

步骤3:在可绘制目录中为Notificaiton Icon 添加图像 [可选]
(flutter_app_name> android> app> src> res> drawable> app_icon.png

如果您没有为通知图标添加图像,则必须告诉应用程序使用存储在“ mipmap”中的应用程序图标。[ANDROID]

 

步骤4:添加提示音(音乐) [可选]

如果您不添加通知音,则它将是您通知的默认音。

添加自定义音调(音乐)

  1. 在res目录中创建目录。
  2. 在此处保留一个小的音频(音乐),并记住文件名。

(flutter_app_name> android> app> src> res> raw>

 步骤5:现在是时候进行编码了

 

所以首先我们要初始化Flutter Notification Plugin,最好在initState()中初始化它这样一旦我们的应用程序启动就可以对其进行初始化,我们可以随时使用它。

在初始化时,我们必须牢记两件事。

1.我们必须定义应用程序图标,在上图中,您可以看到此' new AndroidInitializationSettings('app_icon')'。这里的app_icon是我们放置在drawable目录中的图像名称。
如果您没有输入,则可以使用默认图标,而必须使用“ @ mipmap / ic_launcher”而不是“ app_icon ”。

2.在第二行“ selectNotification:onSelectNotification ”。此行负责当我们单击通知时将要发生的操作。此方法必须返回Future,并且此方法必须具有将成为有效负载的字符串参数。

在下面,您可以看到我正在显示对话框的onSelectNotification方法。您可以打开新页面,也可以显示详细的通知

完整代码:

  1. import 'dart:async';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter_local_notifications/flutter_local_notifications.dart';
  4. void main() => runApp(new MaterialApp(home: new MyApp()));
  5. class MyApp extends StatefulWidget {
  6. @override
  7. _MyAppState createState() => _MyAppState();
  8. }
  9. class _MyAppState extends State<MyApp> {
  10. FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;
  11. @override
  12. void initState() {
  13. super.initState();
  14. flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
  15. var android = new AndroidInitializationSettings('@mipmap/ic_launcher');
  16. var iOS = new IOSInitializationSettings();
  17. var initSetttings = new InitializationSettings(android, iOS);
  18. flutterLocalNotificationsPlugin.initialize(initSetttings, onSelectNotification: onSelectNotification);
  19. }
  20. Future onSelectNotification(String payload) {
  21. debugPrint("payload : $payload");
  22. showDialog(
  23. context: context,
  24. builder: (_) => new AlertDialog(
  25. title: new Text('Notification'),
  26. content: new Text('$payload'),
  27. ),
  28. );
  29. }
  30. @override
  31. Widget build(BuildContext context) {
  32. return Scaffold(
  33. appBar: new AppBar(
  34. title: new Text('Flutter Local Notification'),
  35. ),
  36. body: new Center(
  37. child: new RaisedButton(
  38. onPressed: showNotification,
  39. child: new Text(
  40. 'Demo',
  41. style: Theme.of(context).textTheme.headline,
  42. ),
  43. ),
  44. ),
  45. );
  46. }
  47. showNotification() async {
  48. var android = new AndroidNotificationDetails(
  49. 'channel id', 'channel NAME', 'CHANNEL DESCRIPTION',
  50. priority: Priority.High,importance: Importance.Max
  51. );
  52. var iOS = new IOSNotificationDetails();
  53. var platform = new NotificationDetails(android, iOS);
  54. await flutterLocalNotificationsPlugin.show(
  55. 0, 'New Video is out', 'Flutter Local Notification', platform,
  56. payload: 'Nitish Kumar Singh is part time Youtuber');
  57. }
  58. }

搞定!!!!

 

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

闽ICP备14008679号