flutter

Flutter EventBus消息总站

2020-03-06  本文已影响0人  倪大头

类似iOS里的通知,先在pubspec.yaml导入event_bus库:


image.png

创建一个EventBus.dart文件专门管理这个消息总站
EventBus.dart

import 'package:event_bus/event_bus.dart';

EventBus eventBus = EventBus();

// Event 刷新页面
class RefreshEvent {
  RefreshEvent();
}

eventBus用来收发消息,RefreshEvent是响应事件

发送消息:
在需要发送消息的页面import刚才准备的EventBus.dart文件,
调用代码:

eventBus.fire(RefreshEvent());

可以传值

class RefreshEvent {
  String text;
  RefreshEvent(this.text);
}

接收消息:
在需要接受消息的页面import刚才准备的EventBus.dart文件,
创建一个 StreamSubscription subscription 用来管理eventBus,

StreamSubscription subscription;

  @override
  void initState() {
    super.initState();

    // 消息总站监听
    subscription = eventBus.on<RefreshEvent>().listen((event) {
       print('RefreshEvent');
       loadData();
    });

    loadData();
  }

  @override
  void dispose() {
    super.dispose();
    // 销毁监听
    subscription.cancel();
  }

用subscription来销毁监听
subscription还可以开启和暂停eventBus:

subscription.resume();  //  开启
subscription.pause();  //暂停
上一篇 下一篇

猜你喜欢

热点阅读