Flutter EventBus事件总线的应用详解

 更新时间:2022年08月31日 10:18:34   作者:Zheng  
这篇文章主要为大家介绍了Flutter EventBus事件总线的应用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

前言

flutter项目中,有许多可以实现跨组件通讯的方案,其中包括InheritedWidget,Notification,EventBus等。本文主要探讨的是EventBus事件总线实现跨组件通讯的方法。

EventBus的简介

EventBus的核心是基于Streams。它允许侦听器订阅事件并允许发布者触发事件,使得不同组件的数据不需要一层层传递,可以直接通过EventBus实现跨组件通讯。

EventBus最主要是通过触发事件监听事件两项操作来实现不同页面的跨层访问。触发事件是通过fire(event)方法进行,监听事件则是通过on<T>()方法进行的,其中泛型可以传入指定类型,事件总线将进行针对性监听,如果泛型传值为空,则默认监听所有类型的事件:

void fire(event) {
  streamController.add(event);
}
Stream<T> on<T>() {
  if (T == dynamic) {
    return streamController.stream as Stream<T>;
  } else {
    return streamController.stream.where((event) => event is T).cast<T>();
  }
}

EventBus的实际应用

1、在pubspec.yaml文件中引用eventBus事件总线依赖;

2、创建一个全局的EventBus实例;

3、使用fire(event)方法在事件总线上触发一个新事件(触发事件);

4、为事件总线注册一个监听器(监听事件);

5、取消EventBus事件订阅,防止内存泄漏。

// 1、在pubspec.yaml文件中引用eventBus事件总线依赖;
dependencies:
    event_bus: ^2.0.0
// 2、创建一个全局的EventBus实例;
EventBus myEventBus = EventBus();
// 3、使用fire(event)方法在事件总线上触发一个新事件(触发事件);
Center(
  child: ElevatedButton(
    onPressed: () {
      myEventBus.fire('通过EventBus触发事件');
    },
    child: Text('触发事件'),
  ),
)
var getData;
@override
void initState() {
  // TODO: implement initState
  super.initState();
  // 4、为事件总线注册一个监听器(监听事件);
  getData = myEventBus.on().listen((event) {
    print(event);
  });
}
@override
void dispose() {
  // TODO: implement dispose
  super.dispose();
  // 5、取消EventBus事件订阅,防止内存泄漏。
  getData.cancel();
}

总结

EventBus遵循的是发布/订阅模式,能够通过事件的触发和监听操作,有效实现跨组件通讯的功能。

以上就是Flutter EventBus事件总线的应用详解的详细内容,更多关于Flutter EventBus事件总线的资料请关注脚本之家其它相关文章!

相关文章

  • Android实现自定义轮播图片控件示例

    Android实现自定义轮播图片控件示例

    我们都知道我们做软件的时候,有些应用是有广告的轮番图的,我们实现这个功能的时候大多数是采用:ViewPager +LinearLayout来实现的,今天分享一下我自己自定义的广告轮番图的控件!
    2016-11-11
  • android viewpaper实例探讨

    android viewpaper实例探讨

    本文将提供一个android viewpaper实例实现过程,需要了解更多的朋友可以参考下
    2012-12-12
  • Android开发No Focused Window ANR产生原理解析

    Android开发No Focused Window ANR产生原理解析

    这篇文章主要为大家介绍了Android开发No Focused Window ANR产生原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Flutter绘图组件之CustomPaint使用详解

    Flutter绘图组件之CustomPaint使用详解

    CustomPaint是Flutter中用于自由绘制的一个widget,它与android原生的绘制规则基本一致,以当前Canves(画布)的左上角为原点进行绘制。本文将详细讲解CustomPaint的使用教程,需要的可以参考一下
    2022-03-03
  • 详解Android MacAddress 适配心得

    详解Android MacAddress 适配心得

    本篇文章主要介绍了详解Android MacAddress 适配心得,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • android自定义view实现圆周运动

    android自定义view实现圆周运动

    这篇文章主要为大家详细介绍了android自定义view实现逆时针和顺时针转动的圆周运动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • 微信小程序 canvas开发实例及注意事项

    微信小程序 canvas开发实例及注意事项

    这篇文章主要介绍了微信小程序 wxcanvas开发实例及注意事项的相关资料,这里对微信canvas与H5中的canvas做对比,并说明注意事项,需要的朋友可以参考下
    2016-12-12
  • Android逆向技巧——去除开屏广告

    Android逆向技巧——去除开屏广告

    这篇文章主要介绍了Android如何去除开屏广告,帮助大家更好的理解和学习使用Android开发,感兴趣的朋友可以了解下
    2021-04-04
  • Android中断线程的处理方法

    Android中断线程的处理方法

    这篇文章主要介绍了Android中断线程的处理方法,涉及到线程的中断、处理与返回等操作,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • Android Studio 4.0 正式发布在Ubuntu 20.04中安装的方法

    Android Studio 4.0 正式发布在Ubuntu 20.04中安装的方法

    这篇文章主要介绍了Android Studio 4.0 正式发布如何在Ubuntu 20.04中安装,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06

最新评论