Flutter中的NotificationCenter和EventBus(超级简单!)

废话不都说,123,直接上连接

Github: https://github.com/VictorZhang2014/NotificationCentre

Flutter的pub:https://pub.dev/packages/notification_centre

这么多年了,Flutter要想想自己的问题,为什么不出一个官方的版本呢?所以在此博主就免费献给大家了。 -- 摘自李佳琦直播Show

1.NotificationCenter

不用多说,大家也知道是什么,iOS中的神器,可以在整个应用程序中自由的广播消息,支持一次广播给多个订阅者。

Android中的第三方开源的EventBus也是安卓开发的神器!贯穿整个安卓开发。

使用方式都是,在整个应用程序中有多个订阅,订阅回调里可以接受传递过来的参数,用完需要释放掉。


2.介绍此Flutter库如何使用(超级简单!!!)

比如在一个StatefulWidget页面里,或者StatelessWidget页面里,去订阅/监听,类名和函数名与原生NotificationCenter一致。

  • 第一个参数是字符串,传入任何你希望接收/监听的名称
  • 第二个参数是当前this对象,在StatefulWidgetStatelessWidget都会有
  • 第三参数回调函数,携带有参数,参数可以是字典,也可以是数组,或者其他类型
 
  void initState() {
    
      super.initState(); 
      // 监听/订阅
      NotificationCenter().addObserver(NOTIFICATION_NAME_USER_SIGNED_IN, this, (data) {
   
          // 当登录后回调到这里
      });
  }

页面释放时,需要移除监听对象

  
  void dispose() {
    
      NotificationCenter().removeObserver(NOTIFICATION_NAME_USER_SIGNED_IN, this);
      super.dispose();
  }

广播/发送就非常简单了

  • 第一个参数是字符串,传入任何你希望广播/发送出去的名称
  • 第二参数是携带的参数,参数可以是字典,也可以是数组,或者其他类型,你想传什么类型都可以,因为它是动态类型
  NotificationCenter().postNotification(
      NOTIFICATION_NAME_PURCHASE_COMPLETED, 
      data: {
   "data": YOUR_DATA, "type": "completed"},
  );

3.安装到Flutter项目里

方式1:

flutter pub add notification_centre

方式2:

dependencies:
  notification_centre: ^0.0.3

4.NotificationCenter内置三个NotificationName

  • NOTIFICATION_NAME_USER_SIGNED_IN,表示登录成功
  • NOTIFICATION_NAME_USER_SIGNED_OUT,表示退出登录
  • NOTIFICATION_NAME_PURCHASE_COMPLETED,表示购买完成
  • 大家可以自定义属于自己业务的字符串名称

相关推荐

  1. FlutterNotificationCenterEventBus超级简单!)

    2024-01-06 21:12:04       75 阅读
  2. flutter EventBus

    2024-01-06 21:12:04       26 阅读
  3. FlutterStatelessWidgetStatefulWidget简介与使用

    2024-01-06 21:12:04       69 阅读
  4. FlutterTree

    2024-01-06 21:12:04       63 阅读
  5. Flutter Gap SizedBox 比较与区别

    2024-01-06 21:12:04       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-06 21:12:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-06 21:12:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-06 21:12:04       87 阅读
  4. Python语言-面向对象

    2024-01-06 21:12:04       96 阅读

热门阅读

  1. Rabbitmq下载安装图文详解(Windows版_超详细)

    2024-01-06 21:12:04       58 阅读
  2. ServiceMesh

    2024-01-06 21:12:04       58 阅读
  3. Freemarker实现Html全站静态化

    2024-01-06 21:12:04       52 阅读
  4. Vue Router的介绍与引入

    2024-01-06 21:12:04       59 阅读
  5. 解锁无限可能:深入探索Docker的奇妙世界

    2024-01-06 21:12:04       54 阅读
  6. PyTorch:初学者全面指南torch函数使用

    2024-01-06 21:12:04       51 阅读
  7. c++的map的内存布局

    2024-01-06 21:12:04       69 阅读
  8. 20.oracle保留小数或整数函数

    2024-01-06 21:12:04       57 阅读