Второй StreamBuilder на поток сообщений падает с «Stream has already been listened to»
class ChatRepository {
final _controller = StreamController<List<Message>>();
Stream<List<Message>> get messages => _controller.stream;
}
Список сообщений слушает поток через StreamBuilder — всё работает. Добавили в AppBar счётчик непрочитанных, тоже на repository.messages, — получили Bad state: Stream has already been listened to. Как правильно устроить поток?
- Broadcast-поток и хранить последнее значение
- Создавать новый StreamController в геттере
- Отписывать первый StreamBuilder перед вторым
- Вызывать asBroadcastStream в каждом виджете
