RxDart-Void类型的BehaviorSubject / Observable

时间:2019-05-11 12:24:19

标签: dart flutter system.reactive

处理在RxDart中触发转换的动作的最佳方法是什么?

场景:

  • 用户点击按钮后发送请求。
  • 在列表中请求新页面。

在其他RxSwift之类的Reactive实现中,您可以定义类型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());

我是在重新发明轮子吗?

是否有一种更简单的方法来优雅地处理我在这里提出的建议?

1 个答案:

答案 0 :(得分:0)

您是否尝试过类似subject.add(Object())的事情? 我认为Object实例是迄今为止找到的最好的解决方案,如果暂时没有更好的解决方案,我将继续使用它。

例如,要进行测试,您可以编写如下内容:

  test('my subject test', () {
    subject.listen((result) {
      expect(result, isInstanceOf<Object>());
    });
    // myButtonMethodToTestSubject();
  })

我正在构建此Github-flutter-notes-rxdart应用程序以继续在Flutter上学习RxDart,我选择Object负责根据需要发送“无效”数据

告诉您是否找到适合自己的Action类型的解决方案。