问题标签 [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 投票
3 回答
71 浏览

dart - Dart async*、yield* 和异常处理

如果我嵌套了 async* 流,则似乎无法捕获异常,这是违反直觉的。

一个例子:

这输出:

所以抛出的异常asyncStarError没有被捕获,而Future按预期被捕获。谁能解释为什么?

您可以在 dartpad 中观察行为:https ://dartpad.dartlang.org

0 投票
1 回答
31 浏览

dart - 如何根据另一个流的事件返回一个流

我想根据另一个流的值/事件返回一个流。

例如,如果我有 2 个流,stream1 和 stream2,我想创建一个函数,它根据 stream1 的值作为流返回 stream2 或 null。我怎样才能做到这一点?

我试图映射stream1并根据事件产生stream2,但它不起作用。我也听不到 stream1 和基于事件 yield stream2。

是否有任何解决方案,最好没有任何额外的包依赖项,如 rxdart,只是纯 dart?

0 投票
1 回答
10 浏览

dart - 具有来自另一个流当前值的元素的 List 流

我想基于另一个元素流创建一个列表流。每次列表中的元素发出新值时,列表流都应该产生一个新列表。

像这样的东西:

但它总是产生一个空数组。

我认为问题可能是它对事件侦听器没有反应。

您如何处理此类问题?

0 投票
2 回答
41 浏览

dart - Dart Streams - 如何组合上一个和下一个元素?

我有一个订阅元素流的简单小部件。

每次收到一个新元素时,我还想获取前一个元素并决定其中哪个元素通过下游。

目前我正在使用map运算符来存储前一个元素并计算下一个元素,如下所示:

我怎样才能更好地做到这一点并避免拥有this.previous

0 投票
0 回答
62 浏览

unit-testing - 在构造函数 dart 中添加 Future 方法时出现 MissingStubError

我试图在一些 youtube 指南(bloc)中做出类似的脚步,并在生产代码中完美运行。bloc 指南显示在构造函数中输入异步函数,但是当我创建一个简单的成功测试时,会出现错误 MissingStubError。

这是请求 API 的用例(模拟):

状态管理类:

这里是演示者。我使用外部库 Rxdart 来使用响应式编程(switchMap):

和测试。在行动部分,我尝试使用 await sut.loadData(); 没有它:

这是错误:

Obs:当我删除构造函数中的函数并使用 await sut.loadData(); 在 act 部分应用测试时;完美运行。

0 投票
1 回答
42 浏览

firebase - Firebase Firestore 读取流

我在我的颤振应用程序中使用 Firestore 流。数据是用户配置文件,因此我需要根据需要对其进行过滤。我的初始数据流如下

当我必须过滤数据时,我会

这工作正常,但我担心的是读取,我知道数据已缓存,并且只有在某些情况发生变化但我不知道流时才从服务器读取。

我尝试监控 firebase 上的使用情况,但由于该应用程序正在生产中,我无法正确测量任何东西。

如果通过更改流进行过滤确实会导致对 firebase 的读取,那么我还能做些什么来过滤缓存中的数据。

我想到的一件事是在本地存储所有内容,但在本地存储成千上万用户的数据是不切实际的。

0 投票
2 回答
113 浏览

flutter - Flutter 出现“DatabaseEvent 子类型”错误

下面的代码给出了子类型的错误

数据结构

代码

现在我得到以下错误

0 投票
0 回答
32 浏览

flutter - 如何在不同的飞镖类之间移动数据

我有一个带有对象框数据库的分层颤振应用程序。每当发生任何数据库更改时,数据库都能够使用流发出数据。我的班级结构如下图所示。

在业务逻辑上,将不同的模型组合起来创建视图模型,这些视图模型被馈送到控制器并最终馈送到 UI。

早些时候,我们从数据库中获取简单的飞镖模型。现在要求更改为实时获取更改。我不确定如何在 repo 类中使用流将数据一直带到UIController类中。飞镖模型在每一层都发生变化。有人可以在这里指导我吗?谢谢。

0 投票
1 回答
30 浏览

dart - 如何打破飞镖流的循环?

我知道听可以中止StreamSubscription。但由于某种原因,我不能为 File.openRead() 调用监听。如何中止读取操作流?

0 投票
0 回答
19 浏览

dart - Dart StreamZip 在其中一个子流发出时发出

我有两个提供流的数据源(a 和 b)。他们将独立添加新数据。现在我想创建一个流(z),它将这两个流合并为一个,组合元素。

因此,当“a”第一次发出时,“b”还没有值,什么都不会发生(无论我是否必须实现它或者它是否集成在库中......)。当“b”首先发射时也是如此。

当两个流至少发出一次时,我希望“z”将这两个流合并在一起。这适用于 StreamZip。

但是现在的问题是,如果“a”再次发出,但“b”没有发出,StreamZip 会一直等到“b”再次发出,直到它自己(z)再次发出。我猜这是设计使然,因为源代码显示了这种行为:

有没有办法在不自己编写逻辑的情况下处理这个问题?我想使用 RxDart 是一种选择?还是我使用/解释错误?