问题标签 [dart-stream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flutter - Flutter StreamBuilder 从先前的生成器流生成快照
我有一个 StreamBuilder 包裹在另一个 StreamBuilder 中。内部 StreamBuilder 将分页异步查询的结果加载到 ListView 中。外部 StreamBuilder 使用用户指定的搜索文本发出一个新查询,并构建一个新的内部 StreamBuilder 来监听新查询。该查询使用生成器函数生成流。
我注意到一些非常奇怪的行为:当发出一个新查询并使用新 Stream 重建内部 StreamBuilder 时,它最初从前一个 Stream 接收数据。这在新 Stream 为空时尤其明显(例如,用户的查询没有产生任何结果)。如果新的 Stream 是空的,它会从ConnectionState.waiting
to 开始ConnectionState.done
,并且两个事件(我认为是错误的)都填充了来自前一个生成器 Stream 的数据。
这是我编写的一些代码,以尽可能孤立的方式重现这一点。为简单起见,我用 FutureBuilder 替换了外部 StreamBuilder,尽管行为是相同的。
上面的代码产生以下打印输出:
请注意,在等待连接时,第二个构建从最后一个流的值“3”开始。空流为等待和完成事件产生一个值 3。
如果我创建第二个相同的 intStream 函数(即 intStream 和 intStreamTwo)并在未来完成后调用它,我会按预期获得空数据值,因此问题似乎源于重复调用单个生成器函数以获取不同的流:
这是预期的行为吗?有没有一种理智的方法可以让 StreamBuilder 不从以前的生成器 Stream 接收数据?我想我可以创建两个相同的生成器函数并在它们之间交替,但我真的想要一个不那么老套的解决方案。
dart - 相当于 RxJS Tap 的 Dart 流操作符
我在 dart 中做我的第一个流,我想在 observable 之后打印我的一些值,operators
然后再将它们变为listen
,就像tap
在 RxJS 中一样。这可能吗?我也无法在 RxDart 中找到它。
例如:
firebase - 如何在第二个流中使用流值?
我尝试了2个流:
但问题是 listFromStream1 = event.key; 调用太晚了,所以 listFromStream1 为空
怎么解决?
dart - Dart 将新流添加到流组
我想进行几次定期 REST API 调用并将所有响应合并到一个流中。StreamGroup 可以做到这一点,但是否可以在运行时将新流合并到现有流?假设我有两个周期性流,我将它们与 StreamGroup 合并为一个流。在创建后(因此之后),如何将新的stream.periodic
(例如getC()
)添加/合并到已经存在的 Stream中?stream
StreamGroup.merge(streamList)
firebase - 订阅流并在颤振飞镖中转发
我firestore
用来订阅这样的流:
listen
返回一个StreamSubscription<QuerySnapshot>
现在我想写一个方法,订阅这个流,这样当我得到新结果时我可以做一些事情。但是同样的方法应该自己返回一个数据流。我试过这个:
这将不起作用,因为yield
在内部上下文中甚至都不知道。我怎样才能做到这一点?非常感谢!
dart - 将窗口函数应用于 Dart 流
我对 Dart 还很陌生,而且我的头还在流中。具体来说,我很难找到制作函数的正确方法,该函数从流中获取 N 个元素的窗口,将函数应用于它并重新流式传输结果。
为了澄清我的意思,我举了一个我自己实现的例子,这让我想到了这个问题。该代码从文件中获取字节流并将 4 字节块转换为整数流。通过使用await for
我能够完成我想要的,但我正在寻找一个更惯用的基于流的函数来完成同样的事情,更简洁。
dart - 无需等待即可从异步函数生成生成器的值
我需要同时运行许多异步函数并在它们完成时产生结果,顺序无关紧要。
这是我在一个简化示例中的内容,当然这不起作用,因为它在移动到下一个请求之前等待每个响应。
dart - 如何在 Dart 中返回流而不循环它
我的代码中有一个 Stream,我已经对其进行了一些修改/转换。我想返回那个 Stream 作为我的函数的结果。
此代码有效:
为什么这个更简单、更易读的版本不起作用?
我收到一条错误消息“无法从生成器函数返回值(使用 'async*' 修饰符)
flutter - Dart & Firestore:如何在不使用 whereIn(限制为 10 项)的情况下获取多个文档作为流?
对于了解 Dart 中的 Streams 的人来说,这可能是微不足道的。我有一个 List connections
,它们只是存在于 firestore 的单个集合中的文档 ID。
我不能whereIn
用于我的 firestore 查询,因为它仅限于 10 个项目。因此,我试图遍历每个连接 ID,然后使用带有查询的集合流一次获取一个文档。
下面的代码不起作用。它返回此错误: