我有这个 StreamController:
StreamController<Workout> _selectedWorkoutSubject = new StreamController()
我在这样的 StreamBuilder 中听它:
StreamBuilder(
stream: workoutBloc.selectedWorkoutStream,
builder: (BuildContext context, AsyncSnapshot<Workout> snapshot) {
if (snapshot.hasData) {
return ...
} else {
return Text('loading...');
}
}
);
当我离开当前页面并返回它时,我得到了例外:Bad state: Stream has already been listened to.
我知道我一次只能一次,但这不是我正在做的吗?当我离开页面时,StreamBuilder 应该收集垃圾,释放流,以便其他东西可以收听它。
或者一个 Stream 一般只能听一次(一次不是一次)?我知道我能做到
StreamController<Workout> _selectedWorkoutSubject = new StreamController.broadcast();
但我试图理解为什么它不像我最初那样工作。