下面是一个完整的工作示例:
import 'dart:async';
import 'dart:io';
class Application {
Stream onExit;
Application() {
// Create a stream controller and assign its stream to "onExit".
var controller = new StreamController();
onExit = controller.stream;
// Create some class that uses our stream.
new UserOfStream(this);
// Whenever we exit the application, notify everyone about it first.
controller.add('we are shutting down!');
exit(0);
}
}
class UserOfStream {
UserOfStream(app) {
app.onExit.listen((String message) => print(message));
}
}
main() => new Application();
你也可以做一些很酷的事情,比如判断是否有controller.hasListener
或signal an error的订户.请务必查看StreamController
上的API文档.
您可以使用new StreamController.broadcast()
来允许多个监听器.
下面是创建流的一种简单方法(复制粘贴程序的很棒的代码段):
class Something {
StreamController _onExitController = new StreamController.broadcast();
Stream get onExit => _onExitController.stream;
}
那么该类可以仅访问_onExitController
来控制流(例如控制到.add()
).