问题标签 [rxdart]

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 投票
6 回答
13502 浏览

firebase - Flutter 将两个 Firestore 流合并为一个流

我只是想执行一个“或”操作并将两个查询的结果都放入一个流中。

这是我的带有单个流的代码

现在我想将两个流提供给同一个流构建器,而不是单个流。

我尝试了 StreamGroup 但自从 Widgets 重建后它无法正常工作

我也尝试了以下方法

在这里我得到错误应该至少有一个要合并的流。这是因为 Observable.merge(streamList) 在项目添加到 streamList 之前被调用。

我只是想将两个查询的结果都放入一个流中。

0 投票
1 回答
12268 浏览

dart - Flutter - 如何构建多个嵌套的 BLoC?

假设有一个名为 PreferenceBloc 的顶级 BLoC,而在该 BLoC 内部是另一个名为 PageBloc 的 BLoC。如果 PageBloc 内部的逻辑需要来自 PreferenceBloc 的值流(即,创建一个新页面现在需要知道页面配置),我应该如何构建它?

代码示例:

编辑:综上所述,flutter中Bloc和widget之间的通信很方便,但是Bloc和Bloc之间有没有好的通信方式呢?

0 投票
1 回答
4551 浏览

dart - Flutter - 关闭小部件时 BLoC 流实例会导致内存泄漏吗?

在某些情况下,经常创建和关闭带有各自 BLoC 的屏幕。所以我有点担心在这个过程中创建的 Streams 实例的内存安全性,因为它们似乎没有被放置在某个地方或者它们是否是 GC-ed。这显然取决于 DART 库和颤振的具体实现。所以如果你知道他们的行为,请告诉我。

这些是我遇到的一些场景。

  1. 多标签浏览器式应用程序。
  2. 通过屏幕导航。(但它并没有那么有害。)
  3. 当对话框中有 BLoC 时,showDialog() 情景。这是一个更为常见的情景。应用程序中可能会经常弹出很多对话框。

我想知道是否有必要重写 dispose() 函数并显式关闭 BLoCProvider 中的所有流。似乎现有的教程没有提到它。

0 投票
1 回答
2861 浏览

dart - Dart:将 Observable 转换为 Future,反之亦然?

如何将 Dart 转换Observable为 a Future,反之亦然?

0 投票
1 回答
4688 浏览

dart - Flutter - BLoC 模式 - 如何使用流来调用另一个小部件的方法,即动画?

假设有一个小部件具有控制可见性动画的方法,toggleVisibility(). 在 BLoC 模式中,我想使用流来调用该函数。我觉得这很棘手。

  1. 由于它是动画而不是完整的重绘,因此 StreamBuilder 不适合。
  2. 手动向 BLoC 流添加侦听器也不方便。

    1. initeState()目标小部件的功能中,我们没有上下文,因此很难获得对 BLoC 的引用。

    编辑:在我阅读Rémi Rousselet 的回答后,情况并非如此。我们甚至可以在build()函数之外访问上下文,因为State<T>类有一个名为“上下文”的属性,并且记录在 Flutter 的文档中......我不知道这一点。

    1. build(context)目标小部件的功能中,我们有上下文。但是小部件可以经常重新构建,因此您必须手动清理过时的订阅。否则会产生大量垃圾。
  3. 可以使用 StreamBuilder 进行破解,因为 StreamBuilder 已经实现了所有订阅和取消订阅功能。在目标小部件的布局中的某处插入 StreamBuilder。

但这真的是一个黑客。它将布局与逻辑混合在一起,并引入了一个可能导致布局错误的无用小部件。

所以我想知道在颤振中是否有一种很好的方法来做到这一点。

0 投票
2 回答
2204 浏览

dart - RxDart,将列表的每个项目映射到来自永无止境的流的另一个对象

我一直在试图找到一种很好的方法来做到这一点,但我没有运气。

这是问题的简化版本:

运行此程序时,不会打印任何内容。这是因为主题永远不会完成,因此toList()永远不会完成构建列表。

用例如 an 替换主题Observable.just(index + 2)确实有效,因为 Observable 完成并且toList()能够收集它们。

但是预期的行为是,每次更改主题时,该示例都应发出新的字符串列表。

任何帮助,将不胜感激,

谢谢!

0 投票
2 回答
2568 浏览

unit-testing - 使用 BLoC 模式测试小部件

我一直在学习 Flutter/Dart 和 BLoC 模式。我以这篇文章为起点: https ://www.didierboelens.com/2018/08/reactive-programming---streams---bloc/

我有 bloc 类和小部件工作,但我不知道如何测试小部件。我正在使用BlocProvider文章中描述的 a ,但我不知道如何为小部件提供模拟的 bloc 类。

如果我有这样的代码:

我想模拟我的 ProfileBloc,但它是在我的 build() 函数中创建的,并且需要上下文。如何测试这个小部件?我想我需要一种方法来传递一个模拟的 ProfileBloc,但我不知道该怎么做。我想确保小部件按预期运行。

0 投票
0 回答
1074 浏览

stream - StreamBuilder InitialData 和流控制

这是 BLoc,它有我的 BehaviorSubject 和获取流和最新流值的方法。

这是使用这些 currentUser 作为流源和 currentUserValue 作为 initialData 的 StreamBuilder:

当打开返回此 StreamBuilder 的页面时,我确保 currentUser 具有最新值。但是因为在订阅此流并返回最新值之前它有一些等待时间,所以我将 initialData 设置为 currentUserValue 以确保我们跳过该等待部分。到目前为止,一切都很好。但问题是我想忽略订阅流之后出现的值,并且在等待该流的最新值也到来之后,它与初始数据的值相同。你对此有什么建议吗?

0 投票
1 回答
1768 浏览

dart - Flutter:通过导航加载页面时,Observable.combineLatest2 没有流式传输

我正在创建一个带有块的颤振应用程序。

我遵循了Flutter login with blocs中可用的代码

如果我的应用没有定义路由,它会按预期工作

但是当我更改我的应用程序以使用路线时

集团代码

Observable.combileLatest2 没有流式传输数据(但它流式传输错误)。

使用 Rxdart 版本 0.19.0 和

Flutter 1.0.0 • 频道测试版 •<a href="https://github.com/flutter/flutter.git" rel="nofollow noreferrer">https://github.com/flutter/flutter.git 框架 • 修订5391447fae(6 天前) • 2018-11-29 19:41:26-0800 引擎 • 修订版 7375a0f414Tools • Dart 2.1.0(构建 2.1.0-dev.9.4 f9ebf21297)

我在这里做错了吗?提前致谢

0 投票
1 回答
1159 浏览

dart - Flutter Streams,如何从流中访问先前发出的数据

我有一个流生成器,我想从流中访问先前发出的值。如果熟悉 distinct,他们必须知道 distinct 基本上检查先前值和当前值是否相同。我想访问以前的值。创建我自己的自定义条件。

我正在使用来自 RxDart 的重播主题,最大容量:2 replay-subject 的所有实例都被新数据替换。因此,我无权访问以前的数据,它只是被覆盖了。我被困在如何将数据添加到重播主题方面需要帮助。如果不使用 sink.add() 方法