【发布时间】:2020-05-23 06:40:34
【问题描述】:
问题
我有一个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();
}
}
我尝试了来自dart:async 库的不同API,包括Stream.first 等,它们返回Future<List<T>>。但问题是,这个 Future 仅在稍后将某些内容添加到 Stream 后才能解决(例如,通过调用 StreamedList.updateList 函数)。
问题
如何将单个值添加到 Stream 内的 List?
【问题讨论】:
标签: dart dart-stream