RxDart - ПоведениеSubject / Observable типа Void - PullRequest
0 голосов
/ 11 мая 2019

Каков наилучший способ обработки действий, запускающих преобразования в 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());

Я заново изобретаю колесо?

Есть ли более простой подход к элегантной обработке того, что я здесь предлагаю?

1 Ответ

0 голосов
/ 17 июня 2019

Вы пробовали что-то вроде subject.add(Object())?Object экземпляр - лучшее решение, которое я нашел до сих пор, я думаю, и если пока нет другого лучшего решения, я продолжу работать с ним.

Например, для тестирования вы можете написать что-нибудькак:

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

Я создаю это Github-flutter-notes-rxdart приложение для продолжения изучения RxDart на Flutter, и я выбрал Object как ответственного за отправку "void"данные, в которых вы нуждались

Скажите, если вы нашли лучшее решение для своего Action типа.

...