У меня есть 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 должен получить сборщик мусора, который освобождает поток, чтобы что-то еще могло его прослушать.
Или поток может быть только один раз в общем (не один раз за раз)?Я знаю, что могу просто сделать
StreamController<Workout> _selectedWorkoutSubject = new StreamController.broadcast();
Но я пытаюсь понять, почему это не работает так, как я это делал изначально.