在Android中我们用广播,eventBus等方式来实现监听与消息传递。Flutter中我们用流(Stream)来实现同样的能力,代码如下:
//全局维护一个静态的stream
abstract class EventStreamController {
//Message为流内的消息体,是一个自定义类
static StreamController<Message> _streamNotice;
static Stream<Message> get noticeStream {
if (_streamNotice == null) {
_streamNotice = StreamController<BucketNoticeMessage>.broadcast();
}
return _streamNotice.stream;
}
//提供外部调用发送消息
static sendMessage(Message msg) {
_streamNotice?.sink?.add(msg);
}
}
//自定义消息体(泛型)
abstract class Message{}
注册监听消息
EventStreamController.noticeStream.listen((event) {
if (event is Message) {
//判断泛型,进行相应的操作
}
});
Flutter中对Stream的运用非常广泛,后续补充。
网友评论