0
点赞
收藏
分享

微信扫一扫

Flutter实现EventBus

夏侯居坤叶叔尘 2021-09-28 阅读 48
技术

class EventBus{
//单例
static EventBus _instance;

StreamController  _streamController;

factory EventBus.getDefault(){
return _instance??= EventBus._newInstance();
}

EventBus._newInstance(){
  _streamController = StreamController.broadcast();
}

T void register<T>(void onData(T event)){
  if(T == dynamic){//接受全部类型
    return _streamController.stream.listen(onData);
  }else{
  Stream<T> stream = _streamController.stream.where((type)=>type is T).cast<T>();
return stream.listen(onData);
  }

void post(event){
_streamController.add(event);
}

void destory(){
_streamController.close();
}
}
//顶层函数
void main(){
EventBus.getDefault().register((s){
print('接受所有类型$s');
});
EventBus.getDefault().register<String>((s){
print('接受所有String类型$s');
})

EventBus.getDefault().post("哈哈");
}


举报

相关推荐

0 条评论