问题标签 [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.
firebase - Flutter 将两个 Firestore 流合并为一个流
我只是想执行一个“或”操作并将两个查询的结果都放入一个流中。
这是我的带有单个流的代码
现在我想将两个流提供给同一个流构建器,而不是单个流。
我尝试了 StreamGroup 但自从 Widgets 重建后它无法正常工作
我也尝试了以下方法
在这里我得到错误应该至少有一个要合并的流。这是因为 Observable.merge(streamList) 在项目添加到 streamList 之前被调用。
我只是想将两个查询的结果都放入一个流中。
dart - Flutter - 如何构建多个嵌套的 BLoC?
假设有一个名为 PreferenceBloc 的顶级 BLoC,而在该 BLoC 内部是另一个名为 PageBloc 的 BLoC。如果 PageBloc 内部的逻辑需要来自 PreferenceBloc 的值流(即,创建一个新页面现在需要知道页面配置),我应该如何构建它?
代码示例:
编辑:综上所述,flutter中Bloc和widget之间的通信很方便,但是Bloc和Bloc之间有没有好的通信方式呢?
dart - Flutter - 关闭小部件时 BLoC 流实例会导致内存泄漏吗?
在某些情况下,经常创建和关闭带有各自 BLoC 的屏幕。所以我有点担心在这个过程中创建的 Streams 实例的内存安全性,因为它们似乎没有被放置在某个地方或者它们是否是 GC-ed。这显然取决于 DART 库和颤振的具体实现。所以如果你知道他们的行为,请告诉我。
这些是我遇到的一些场景。
- 多标签浏览器式应用程序。
- 通过屏幕导航。(但它并没有那么有害。)
- 当对话框中有 BLoC 时,showDialog() 情景。这是一个更为常见的情景。应用程序中可能会经常弹出很多对话框。
我想知道是否有必要重写 dispose() 函数并显式关闭 BLoCProvider 中的所有流。似乎现有的教程没有提到它。
dart - Dart:将 Observable 转换为 Future,反之亦然?
如何将 Dart 转换Observable
为 a Future
,反之亦然?
dart - Flutter - BLoC 模式 - 如何使用流来调用另一个小部件的方法,即动画?
假设有一个小部件具有控制可见性动画的方法,toggleVisibility()
. 在 BLoC 模式中,我想使用流来调用该函数。我觉得这很棘手。
- 由于它是动画而不是完整的重绘,因此 StreamBuilder 不适合。
手动向 BLoC 流添加侦听器也不方便。
- 在
initeState()
目标小部件的功能中,我们没有上下文,因此很难获得对 BLoC 的引用。
编辑:在我阅读Rémi Rousselet 的回答后,情况并非如此。我们甚至可以在
build()
函数之外访问上下文,因为State<T>
类有一个名为“上下文”的属性,并且记录在 Flutter 的文档中......我不知道这一点。- 在
build(context)
目标小部件的功能中,我们有上下文。但是小部件可以经常重新构建,因此您必须手动清理过时的订阅。否则会产生大量垃圾。
- 在
- 可以使用 StreamBuilder 进行破解,因为 StreamBuilder 已经实现了所有订阅和取消订阅功能。在目标小部件的布局中的某处插入 StreamBuilder。
但这真的是一个黑客。它将布局与逻辑混合在一起,并引入了一个可能导致布局错误的无用小部件。
所以我想知道在颤振中是否有一种很好的方法来做到这一点。
dart - RxDart,将列表的每个项目映射到来自永无止境的流的另一个对象
我一直在试图找到一种很好的方法来做到这一点,但我没有运气。
这是问题的简化版本:
运行此程序时,不会打印任何内容。这是因为主题永远不会完成,因此toList()
永远不会完成构建列表。
用例如 an 替换主题Observable.just(index + 2)
确实有效,因为 Observable 完成并且toList()
能够收集它们。
但是预期的行为是,每次更改主题时,该示例都应发出新的字符串列表。
任何帮助,将不胜感激,
谢谢!
unit-testing - 使用 BLoC 模式测试小部件
我一直在学习 Flutter/Dart 和 BLoC 模式。我以这篇文章为起点: https ://www.didierboelens.com/2018/08/reactive-programming---streams---bloc/
我有 bloc 类和小部件工作,但我不知道如何测试小部件。我正在使用BlocProvider
文章中描述的 a ,但我不知道如何为小部件提供模拟的 bloc 类。
如果我有这样的代码:
我想模拟我的 ProfileBloc,但它是在我的 build() 函数中创建的,并且需要上下文。如何测试这个小部件?我想我需要一种方法来传递一个模拟的 ProfileBloc,但我不知道该怎么做。我想确保小部件按预期运行。
stream - StreamBuilder InitialData 和流控制
这是 BLoc,它有我的 BehaviorSubject 和获取流和最新流值的方法。
这是使用这些 currentUser 作为流源和 currentUserValue 作为 initialData 的 StreamBuilder:
当打开返回此 StreamBuilder 的页面时,我确保 currentUser 具有最新值。但是因为在订阅此流并返回最新值之前它有一些等待时间,所以我将 initialData 设置为 currentUserValue 以确保我们跳过该等待部分。到目前为止,一切都很好。但问题是我想忽略订阅流之后出现的值,并且在等待该流的最新值也到来之后,它与初始数据的值相同。你对此有什么建议吗?
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)
我在这里做错了吗?提前致谢
dart - Flutter Streams,如何从流中访问先前发出的数据
我有一个流生成器,我想从流中访问先前发出的值。如果熟悉 distinct,他们必须知道 distinct 基本上检查先前值和当前值是否相同。我想访问以前的值。创建我自己的自定义条件。
我正在使用来自 RxDart 的重播主题,最大容量:2 replay-subject 的所有实例都被新数据替换。因此,我无权访问以前的数据,它只是被覆盖了。我被困在如何将数据添加到重播主题方面需要帮助。如果不使用 sink.add() 方法