Проблема
У меня есть Stream<List>
, который прослушивается в нескольких классах, и мне нужно, чтобы все классы получали обновленный поток после добавления значения в список в Поток.
Что я пробовал
void main() {
StreamedList<String> dataStream = StreamedList();
dataStream.data.listen((list) => print(list));
dataStream.updateList(['Apple', 'Orange']);
dataStream.addToList('Mango'); // This is what I want to do
}
Это код для StreamList
класса
class StreamedList<T> {
StreamController<List<T>> _controller = StreamController.broadcast();
Stream<List<T>> get data => _controller.stream;
void updateList(List<T> list) {
_controller.sink.add(list);
}
void addToList(T value) {
// Is it possible to do this?
// List<T> dataList = await _controller.data;
// dataList.add(value);
// updateList(dataList);
}
void dispose() {
_controller.close();
}
}
Я пробовал разные API из библиотеки dart:async
, включая Stream.first
, et c. которые возвращают Future<List<T>>
. Но проблема в том, что это Будущее разрешается только после того, как что-то будет добавлено в Поток позже (например, путем вызова функции StreamedList.updateList
).
Вопрос
Как сделать Я добавляю одно значение к List
внутри Stream
?