【发布时间】:2019-05-11 12:24:18
【问题描述】:
在RxDart 中处理触发转换的操作的最佳方式是什么?
场景:
- 用户点击按钮后发送请求。
- 请求列表中的新页面。
在RxSwift 等其他响应式实现中,您可以定义类型Observable<Void> 并监听新事件以启动转换。
您可以在 RxDart 中定义一个 Observable,但随后您不得不在主题中添加一些内容,例如 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());
我是在重新发明轮子吗?
有没有更简单的方法来优雅地处理我在这里提出的建议?
【问题讨论】:
-
是的,你是对的:
PublishSubject是一种跟随方式——只需调用add方法将你的数据事件发送给注册的监听器 -
在 Rx.Net 中我们使用 Observable
,如果没有其他数据 -
谢谢@pskink。但是,问题是关于数据类型的。另一部分已经解决了。
-
使用 void - 按钮不传递任何数据
-
或
subject.add(null)但如果你不喜欢这样的nulls 扩展PublishSubject<null>并添加add()方法,该方法将简单地调用this.add(null)
标签: dart flutter system.reactive