问题标签 [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.

0 投票
1 回答
178 浏览

flutter - Flutter StreamBuilder 从先前的生成器流生成快照

我有一个 StreamBuilder 包裹在另一个 StreamBuilder 中。内部 StreamBuilder 将分页异步查询的结果加载到 ListView 中。外部 StreamBuilder 使用用户指定的搜索文本发出一个新查询,并构建一个新的内部 StreamBuilder 来监听新查询。该查询使用生成器函数生成流。

我注意到一些非常奇怪的行为:当发出一个新查询并使用新 Stream 重建内部 StreamBuilder 时,它最初从前一个 Stream 接收数据。这在新 Stream 为空时尤其明显(例如,用户的查询没有产生任何结果)。如果新的 Stream 是空的,它会从ConnectionState.waitingto 开始ConnectionState.done,并且两个事件(我认为是错误的)都填充了来自前一个生成器 Stream 的数据。

这是我编写的一些代码,以尽可能孤立的方式重现这一点。为简单起见,我用 FutureBuilder 替换了外部 StreamBuilder,尽管行为是相同的。

上面的代码产生以下打印输出:

请注意,在等待连接时,第二个构建从最后一个流的值“3”开始。空流为等待和完成事件产生一个值 3。

如果我创建第二个相同的 intStream 函数(即 intStream 和 intStreamTwo)并在未来完成后调用它,我会按预期获得空数据值,因此问题似乎源于重复调用单个生成器函数以获取不同的流:

这是预期的行为吗?有没有一种理智的方法可以让 StreamBuilder 不从以前的生成器 Stream 接收数据?我想我可以创建两个相同的生成器函数并在它们之间交替,但我真的想要一个不那么老套的解决方案。

0 投票
1 回答
362 浏览

dart - 相当于 RxJS Tap 的 Dart 流操作符

我在 dart 中做我的第一个流,我想在 observable 之后打印我的一些值,operators然后再将它们变为listen,就像tap在 RxJS 中一样。这可能吗?我也无法在 RxDart 中找到它。

例如:

0 投票
0 回答
24 浏览

firebase - 如何在第二个流中使用流值?

我尝试了2个流:

但问题是 listFromStream1 = event.key; 调用太晚了,所以 listFromStream1 为空

怎么解决?

0 投票
1 回答
132 浏览

dart - Dart 将新流添加到流组

我想进行几次定期 REST API 调用并将所有响应合并到一个流中。StreamGroup 可以做到这一点,但是否可以在运行时将新流合并到现有流?假设我有两个周期性流,我将它们与 StreamGroup 合并为一个流。在创建后(因此之后),如何将新的stream.periodic(例如getC())添加/合并到已经存在的 Stream中?stream StreamGroup.merge(streamList)

0 投票
2 回答
425 浏览

firebase - 订阅流并在颤振飞镖中转发

firestore用来订阅这样的流:

listen返回一个StreamSubscription<QuerySnapshot>

现在我想写一个方法,订阅这个流,这样当我得到新结果时我可以做一些事情。但是同样的方法应该自己返回一个数据流。我试过这个:

这将不起作用,因为yield在内部上下文中甚至都不知道。我怎样才能做到这一点?非常感谢!

0 投票
1 回答
146 浏览

dart - 将窗口函数应用于 Dart 流

我对 Dart 还很陌生,而且我的头还在流中。具体来说,我很难找到制作函数的正确方法,该函数从流中获取 N 个元素的窗口,将函数应用于它并重新流式传输结果。

为了澄清我的意思,我举了一个我自己实现的例子,这让我想到了这个问题。该代码从文件中获取字节流并将 4 字节块转换为整数流。通过使用await for我能够完成我想要的,但我正在寻找一个更惯用的基于流的函数来完成同样的事情,更简洁。

0 投票
2 回答
40 浏览

dart - 无需等待即可从异步函数生成生成器的值

我需要同时运行许多异步函数并在它们完成时产生结果,顺序无关紧要。

这是我在一个简化示例中的内容,当然这不起作用,因为它在移动到下一个请求之前等待每个响应。

0 投票
2 回答
22 浏览

dart - 如何在 Dart 中返回流而不循环它

我的代码中有一个 Stream,我已经对其进行了一些修改/转换。我想返回那个 Stream 作为我的函数的结果。

此代码有效:

为什么这个更简单、更易读的版本不起作用?

我收到一条错误消息“无法从生成器函数返回值(使用 'async*' 修饰符)

0 投票
0 回答
35 浏览

flutter - Dart & Firestore:如何在不使用 whereIn(限制为 10 项)的情况下获取多个文档作为流?

对于了解 Dart 中的 Streams 的人来说,这可能是微不足道的。我有一个 List connections,它们只是存在于 firestore 的单个集合中的文档 ID。

我不能whereIn用于我的 firestore 查询,因为它仅限于 10 个项目。因此,我试图遍历每个连接 ID,然后使用带有查询的集合流一次获取一个文档。

下面的代码不起作用。它返回此错误:

0 投票
0 回答
193 浏览

unit-testing - Streams (Dart) 中的意外行为单元测试

我正在使用两个库来制作流:native 和 getX。我创建了两个测试组:native 和 getX,它们具有来自抽象类 ( AnyPresenter) 的相同契约。其中之一是Stream<bool> get isLoadingStreamwhich for native is_state.isLoading和 for getx is isLoading

流仅在运行以下方法时发生变化:

本国的:

在此处输入图像描述

获取:

在此处输入图像描述

我对两者都使用了相同的测试,但它在本机测试中运行不正确。

预期结果:[真,假]

本机错误: 在此处输入图像描述

这是示例代码:

抱歉有任何错误。英语不是我的母语