我想在读取数据后将其从流中删除。
基本上我想要与 Go 中的通道相同的系统。
因此,如果我添加 5、3 和 2,我的流将包含 5、3 和 2。
当我开始阅读时,我会得到 5,而我的流现在包含 3 和 2 等...
是否可以?
编辑:这是我的一些代码问题。
我使用 StreamBuilder 来接收数据。当我更改状态时,它会再次触发我的功能,就像我刚刚接收数据一样。
child: StreamBuilder<Tag>(
stream: widget.tagStream,
initialData: Tag(),
builder: (BuildContext context, AsyncSnapshot<Tag> snapshot) {
/// This should be trigger only when I receive data
if (mapController.ready && snapshot.hasData) {
tag = snapshot.data;
mapController.move(
LatLng(tag.position.latitude, tag.position.longitude),
mapController.zoom);
}
return RubberBottomSheet(...);
),
Run Code Online (Sandbox Code Playgroud)
这里有一些上下文:
我有一张带有代表对象的图标的地图。当我单击图标或在搜索栏上搜索相关项目时,会出现一个 RubberBottomSheet,显示有关该对象的信息。为此,我使用 StreamBuilder,因此我只需将单击或搜索的对象放入其中即可使我的橡胶出现并填充。我还需要以图标为中心,让用户知道该对象在哪里。我的问题是,当我打开或关闭键盘或使用 setState(例如更改搜索栏的外观)时,它会自动触发 StreamBuilder,就像它收到新数据一样。
抱歉,我应该从这里开始......
我需要存储一些应在我的应用程序中到处可用的数据。到目前为止,我知道执行此操作的三种方法:
我想知道哪种解决方案(或我不知道的另一种解决方案)在性能方面最容易实现。