你误会了
Stream
做。它不“包含”数据。它只接受一端(接收器)的数据并将其传播到另一端(流),任何侦听器都可以访问流对象。尝试“在流中的列表中插入项”没有任何概念上的意义。
class StreamedList<T> {
StreamController<List<T>> _controller = StreamController.broadcast();
Stream<List<T>> get data => _controller.stream;
List<T> _list = [];
void updateList(List<T> list) {
_list = list;
_dispatch();
}
void addToList(T value) {
_list.add(value);
_dispatch();
}
void _dispatch() {
controller.sink.add(_list);
}
void dispose() {
_list = null;
_controller.close();
}
}
如果你想加倍安全,你可以在
addToList
_list
也。
void addToList(T value) {
_list = [..._list, value];
_dispatch();
}