dart - RxDart - Void 类型的 BehaviorSubject/Observable
问题描述
处理触发转换的动作的最佳方法是RxDart
什么?
场景:
- 用户点击按钮后发送请求。
- 请求列表中的新页面。
在其他 Reactive 实现中,例如RxSwift
,您可以定义类型Observable<Void>
并监听新事件以开始转换。
您可以在其中定义一个 Observable,RxDart
但随后您被迫在主题中添加一些内容,例如subject.add('something')
或subject.add(0)
令人困惑的内容。使用它会很酷subject.add(void)
,subject.add()
或者subject.add(())
这是不可能的。
我想到的第一个想法是Empty
为提议的场景创建一个类似或更具体的新类型Action
。
然后我可以做这样的事情:
PublishSubject<Action> action = PublishSubject<Action>();
action.withLatestFrom(...)
.map(....) // Apply the desired transformations
....
....;
action.add(Action.create());
action.add(Action.create());
我在重新发明轮子吗?
有没有更简单的方法来优雅地处理我在这里提出的建议?
解决方案
你试过类似的东西subject.add(Object())
吗?
Object
instance 是我迄今为止找到的最佳解决方案,我认为,如果目前没有其他更好的解决方案,我将继续使用它。
例如,为了测试它,您可以编写如下内容:
test('my subject test', () {
subject.listen((result) {
expect(result, isInstanceOf<Object>());
});
// myButtonMethodToTestSubject();
})
我正在构建这个Github-flutter-notes-rxdart应用程序以继续在 Flutter 上学习 RxDart,并且我选择Object
负责根据您的要求发送“无效”数据
告诉您是否为自己的Action
类型找到了更好的解决方案。
推荐阅读
- c# - 从 service-now 到 dotnet webAPI 认证编排的最佳实践方法?
- javascript - 打字稿让我通过一个 id 即使它是一个大序列并且它应该自行增加
- python - pyspark local[*] vs spark.executor.cores"
- python - Python Selenium - 从类中获取链接
- java - 在 setBottom 的窗格和 iPhone 上的滑动指示器之间没有足够的空间
- c++ - Bjam 如何打印编译中使用的包含路径
- django - AttributeError:模块“student.models”没有属性“ManyToManyField”
- reactjs - 与 getServerSideProps 一起使用时,带有 SWR 的 NextJS 在验证期间显示 initialData
- apache - 将 mod_rewrite 与变量一起使用(用于在 htaccess 中进行代理)?
- github - 有谁知道如何自动化 TruffleHog 扫描?