创建一个观看列表的流?
Posted
技术标签:
【中文标题】创建一个观看列表的流?【英文标题】:Create a stream watching a list? 【发布时间】:2021-12-14 20:12:11 【问题描述】:我有一个这样的全局列表:
var data = [1,2,3];
我会向它添加更多元素,并且每次我都希望通知其他内容 - 我需要一个流和侦听器。那么我可以创建一个流并告诉它在列表发生变化时运行 sink.add 吗?
var stream = Stream.fromIterable(data);
stream.listen((item) => print(item));
> 1
> 2
> 3
data.add(4);
> Uncaught Error: Concurrent modification during iteration
data.remove(3);
> Uncaught Error: Concurrent modification during iteration
哦,不。我可以做些什么来完成这项工作?
【问题讨论】:
【参考方案1】:这可能会有所帮助:
import 'dart:async';
class ObservableList<T>
final _list = <T>[];
final _itemAddedStreamController = StreamController<T>();
final _listStreamController = StreamController<List<T>>();
Stream get itemAddedStream => _itemAddedStreamController.stream;
Stream get listStream => _listStreamController.stream;
void add(T value)
_list.add(value);
_itemAddedStreamController.add(value);
_listStreamController.add(_list);
void dispose()
_listStreamController.close();
_itemAddedStreamController.close();
void main()
final observableList = ObservableList<int>();
observableList.itemAddedStream.listen((value) => print(value));
observableList.add(1);
observableList.add(2);
observableList.add(3);
observableList.add(4);
【讨论】:
以上是关于创建一个观看列表的流?的主要内容,如果未能解决你的问题,请参考以下文章