Dart 一条流可以一次听一次还是一般听一次?
我有一个StreamController:Dart 一条流可以一次听一次还是一般听一次?,dart,flutter,bloc,Dart,Flutter,Bloc,我有一个StreamController: StreamController\u selectedWorkoutSubject=newstreamcontroller() 我在StreamBuilder中听到它,如下所示: StreamBuilder( stream: workoutBloc.selectedWorkoutStream, builder: (BuildContext context, AsyncSnapshot<Workout> snapshot) {
StreamController\u selectedWorkoutSubject=newstreamcontroller()
我在StreamBuilder中听到它,如下所示:
StreamBuilder(
stream: workoutBloc.selectedWorkoutStream,
builder: (BuildContext context, AsyncSnapshot<Workout> snapshot) {
if (snapshot.hasData) {
return ...
} else {
return Text('loading...');
}
}
);
但我正在试图理解为什么它不能像我最初那样工作。尝试一些事情:
onCancel
和onListen
事件,因此您可以避免在没有侦听器时执行工作
令人恼火的是,没有一个流可以被多次收听,但它不是广播流。广播流将多个属性组合成一个概念,有时您需要一个只包含其中一些属性的流(例如,多次收听,但不一定向每个人发送相同的值)。它不是“一次一个”。非广播流只能收听一次
目前,我认为使用广播流是最好的选择。当广播流控制器停止具有侦听器并再次开始具有侦听器时,它确实会获得onCancel
和onListen
事件,因此您可以避免在没有侦听器时执行工作
令人恼火的是,没有一个流可以被多次收听,但它不是广播流。广播流将多个属性组合成一个概念,有时您需要一个仅包含其中一些属性的流(例如,多次侦听,但不一定向每个人发送相同的值).我会发布更多的代码,包括您在哪里分配workoutBloc和那里的流。我会发布更多的代码,包括您在哪里分配workoutBloc和那里的流。
StreamController<Workout> _selectedWorkoutSubject = new StreamController.broadcast();