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("哈哈");
}