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

news/2024/7/20 20:37:32 标签: flutter, EventBus, Notification, iOS, Android, 安卓

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

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

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

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

NotificationCenter_15">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

NotificationCenterNotificationName_83">4.NotificationCenter内置三个NotificationName

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

http://www.niftyadmin.cn/n/5307508.html

相关文章

8、VS中Git使用

VS中Git使用 1.基础操作1.1 VS配置Git1.2 操作界面 2.本地库版本管理2.1 创建管理本地库2.2 暂存、存储2.3 提交2.4 版本切换 3.分支操作3.1 分支应用3.2 新建分支3.3 合并分支、解决冲突3.4 删除分支 4.远程库版本管理4.1 新建、克隆4.2 提取、拉取、推送与同步4.3 团队开发 最…

Pytest的测试报告——Allure

一、html-report测试报告 html-report测试报告。是pytest下基本的测试报告。要使用pytest-html测试报告,就要确保python版本在3.6及以上即可。本身pytest所提供的测试结果汇总,是基于控制台的文本输出形式。 pytest-html是基于HTML格式实现的测试报告的…

基于SpringBoot的医院挂号就诊系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的医院挂号就诊系统,java…

使用pymysql框架连接和查询MySQL数据库

使用pymysql框架连接和查询MySQL数据库步骤: 前提:安装并import pymysql模块 1、使用 pymysql.connect()函数创建一个数据库连接对象 2、正确填写数据库配置信息,地址、端口、用户名、密码、数据库名称 3、创建游标…

【Electron】快速建立Vue3+Vite+Electron Ts项目

git https://github.com/electron-vite/electron-vite-vue 创建项目 npm create electron-vite or pnpm create electron-vite 初始化 pnpm install or pnpm i 启动项目 pnpm dev 打包项目 pnpm build 项目创建成功后默认情况下 窗口是H800 W600 在createWindow 函数…

[蓝桥杯学习] 树状树组

lowbit操作 数字二进制表达中的最低位1以及后面所有的0,函数写法如下: int lowbit(int x){return x&-x;} 例如说,lowbit(0101100100) (100) lowbit(4) 4 lowbit(6) 2 时间复杂度o(1) 树状数组 应用 进行单点修改和区间查询…

从零学Java Object类

Java Object类 文章目录 Java Object类Object类Object类中的方法1 getClass()方法2 hashCode()方法3 toString()方法4 equals()方法面试题: 和 equals 方法的区别? 5 finalize()方法(JDK1.9放弃 了解即可) Object类 所有类的直接或间接继承Object&…

手拉手springboot3整合mybatis-plus多数据源

环境介绍 技术栈 springbootmybatis-plusmysql 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 17 Spring Boot 3.1.7 dynamic-datasource 3.6.1 mybatis-plus 3.5.3.2 加入依赖 <dependency><groupId>com.baomidou</groupId><arti…