问题标签 [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 回答
1656 浏览

flutter - 如何在 Flutter Cubit 中使用 StreamSubscription

我有一个问题,即流订阅肘部不听肘部的发射状态。这是我如何在代码中实现它们的示例。

这是我想听的肘

这是我要订阅的腕尺,我要听的腕尺。

之后,我emitButtonOnePressed()像下面这样调用了 ButtonPressCubit。

但这不起作用。如何修复它以获得肘部的状态。

0 投票
1 回答
689 浏览

dart - 转换流流式传输> 在飞镖

tl;博士;

希望将 a 转换Stream<int>Stream<List<String>>.

长版:

我是 dart/flutter 和这种编程风格的新手,所以请原谅我的菜鸟问题。

我正在通过蓝牙发送一个char/uint8_t包含 ASCII 字符串的流。这是在Stream<int>颤振应用程序中以 a 的形式接收的。我希望将此字节流拆分为字符串行。

我认为解决这个问题的方法是将每个 int 转换为一个字符(由 dart 中的字符串表示),然后对流进行某种拆分操作。我找不到在流上进行拆分的好例子,有人可以帮忙吗?

谢谢。

0 投票
0 回答
58 浏览

dart - rxdart - 使用 combineLatest,combiner 的工作方式

组合器实际上是如何工作的?

如果name1和是流,那么括号中的和mobile1是什么类型?name2mobile2

0 投票
0 回答
148 浏览

flutter - 如何使用 WebSocket 在 dart 中按顺序执行异步函数

我目前正在编写一个 WebSocket 客户端。我需要按顺序执行一些功能。

目前我是这样做的

  1. 连接到服务器
  2. 然后设置一个监听器。
  3. 向侦听器添加条件语句。(检查响应 ID 是否匹配请求 ID)
  4. 发送带有 id 的请求一
  5. 如果响应 id 与请求 One Id 匹配,则处理请求
  6. 发送请求二
  7. 重复

这使得顺序动作看起来像这样

我想做的是

设置异步函数将请求发送到 WebSocket 服务器。暂停异步函数的执行。等到来自服务器的匹配响应完成异步功能。

这将允许我编写一系列动作,例如

我想我可以在每个action函数中设置和销毁一个流侦听器,但我不知道如何在退出之前等待特定的响应。

另一方面,我认为我什至可以在外部使用现有的侦听器,但我仍然无法弄清楚要等到特定的响应进来后再继续前进。

因为它是我必须跳过每个函数来找出另一个之后的内容,并且有超过 5 个请求必须按顺序发送。

0 投票
1 回答
518 浏览

flutter - 在 Dart/Flutter 中流式传输时出现 StateError(错误状态:元素过多)

我正在使用 Multiprovider 来提供我的自定义 GameLobby 类,如下所示:

后来,在 GameLobby 类中,我调用了 firebase.firestore 来创建一个新集合

此代码通常第一次工作。当我出于测试目的在firebase上手动插入一个条目时,gameRef.doc(user.uid).snapshots().listen() 会再次触发,因为条目已更改并且我正在收听它。

这次 gameState 属性是 change 并且 gameState 在 setter 方法中流式传输,例如:

我想添加新的游戏状态来根据新状态和播放器列表进行流式传输和重建。但现在我得到

StateError(坏状态:元素太多)

在这里定义和抛出: https ://api.flutter.dev/flutter/dart-async/Stream/single.html

// 这是我们得到的第二个元素。

尝试{扔

IterableElementError.tooMany();

这里有什么问题?流一次不允许多个接收器元素吗?

0 投票
0 回答
30 浏览

flutter - 我应该关闭 BehaviorSubject

因为这个,我晚上睡不着觉

我正在使用我的类DataObjectListOptions<T>,其中包含许多帮助程序,以便我收听来自 firestore 的数据并对数据应用过滤和任何自定义转换

BehaviorSubject<T> objectsData过去常常使用StreamBuilder

所以我的问题是:我应该创建一个 dispose 方法DataObjectListOptions<T>来关闭BehaviorSubject 还是在取消所有 s 的订阅objectsData后自动发生这种情况?StreamBuilder

数据对象列表选项:

UI 中的示例用法:

0 投票
2 回答
174 浏览

flutter - Dart 流(Flutterfire):我应该在映射之前还是之后使用 where 过滤器?

我正在使用 Flutter 制作应用程序,后端使用 Cloud Firestore。我有一个流,它检索所有用户的用户文档列表,并希望过滤最喜欢的食物是“意大利面”的用户。我不想加载其他文件。这是我的流,以及将其映射到我的用户模型的函数。

如果需要,这是我的用户模型:

我应该在映射之后还是之前使用 where 函数?

如果我在映射之前过滤,我将不得不在原始流上做一个 where

如果我在映射后过滤,我可以获得类型安全

我用 Provider 收听流:final users = Provider.of<List<MyAppUser>>(context); 然后像这样查询:

我更喜欢使用类型安全,但是,我是否会因为只阅读过滤后的文档或所有文档而付费?

0 投票
0 回答
630 浏览

flutter - Flutter:如何检查流是否为空或没有事件?

我正在使用flutter_beacon包来扫描这样的信标,

现在因为没有找到我想调用的信标onBleSearch(false),但它没有进入函数内部,.listen((l){})因为我认为没有事件可以调用该函数

那么我如何检查流是否没有数据并调用这个onBleSearch(false)函数呢?

0 投票
1 回答
154 浏览

flutter - 如何结合第二个依赖于第一个的两个流?

我正在构建一个应用程序,其中 aDocument属于DocumentTemplatea DocumentFamily

我正在为应用程序处理基本的 CRUD 操作,我需要一种watchDocumentTemplateById方法来获取 a 流,DocumentTemplate但我还需要观看它的DocumentFamily.

问题是我不知道如何嵌套这两个流,以便在更新 aDocumentFamily时,DocumentTemplate将更新DocumentFamily.

如果有人能告诉我正确的方法,我将不胜感激。我使用 Flutter 和 ObjectBox 作为我的本地数据库。

这是watchDocumentTemplateById我开始实施的方法(未完成):

以及上面提到的类(DocumentTemplate、DocumentTemplateEntity、DocumentFamily 和 DocumentFamilyEntity):

文档模板:

文档模板实体:

文档族:

文档家庭实体:

提前致谢 !

编辑 :

我试图自己解决它并找到了该switchMap方法,该方法似乎将两个流合并为一个,但我不完全确定它是否可以在这里使用更新的watchDocumentTemplateById方法:

ref.:如何在 Dart 中嵌套 Streams(将 Streams 映射到 Stream 事件)?

0 投票
1 回答
91 浏览

flutter - 如何获得间隔不均匀的飞镖流?

我是 dart 和 Flutter 的新手,很想就我面临的算法问题获得一些建议。

我想将我的 Flutter 应用程序连接到蓝牙设备(该部分已完成,我已经连接)并以不均匀的间隔发送消息。我有一个列表中的消息,对于每个消息,我都知道我想在什么时间(毫秒)发送消息。

因此,假设排列了以下消息:

  • start在 0 毫秒
  • init_app在 100 毫秒
  • user_pick_x在 500 毫秒
  • user_start_x在 500ms (将在之后发送user_pick_x,应保证订单)
  • interrupt在 3500 毫秒

我找到了创建流的文档,但它总是谈论单个间隔值。https://dart.dev/articles/libraries/creating-streams

想法:

  • 从技术上讲,我可以传入Duration对象列表并使用自定义生成器async*以及消息字符串。
  • 或者,我可以将间隔设置为最低时间增量,并检查每个是否应该发送一条消息。在示例的情况下,这将是每 100 毫秒。

能够暂停/取消流也很好。这是流本身可以做的事情。