首页 > 解决方案 > 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());

我在重新发明轮子吗?

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

标签: dartfluttersystem.reactive

解决方案


你试过类似的东西subject.add(Object())吗? Objectinstance 是我迄今为止找到的最佳解决方案,我认为,如果目前没有其他更好的解决方案,我将继续使用它。

例如,为了测试它,您可以编写如下内容:

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

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

告诉您是否为自己的Action类型找到了更好的解决方案。


推荐阅读