Dart BLoC с потоком, который необходимо обновить при обновлении одного из двух приемников - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу иметь класс BLoC, в котором выходной поток Stream необходимо обновлять при обновлении одного или обоих из двух входов (Sinks).

Как подключить Steam для запуска, когда один из Sinkобновлен / различен?

import 'package:escapemodels/src/bloc/blocbase.dart';
import 'package:rxdart/rxdart.dart';

class MathAddBloc implements BlocBase {
  final Sink<int> x;
  final Sink<int> y;
  final Stream<int> addxy;

  factory MathAddBloc() {

    final x = PublishSubject<int>();
    final y = PublishSubject<int>();

  // This is the part that I am confused about - I can figure how to trigger when one Sink/Observable changes but not when either one is updated.
    final addxy = x
    .distinct()
    .switchMap<int>((int x) => (x + y.last))
    .startWith(0);

    return MathAddBloc._(x,y, addxy);
  }


  MathAddBloc._(this.x, this.y, this.addxy);

  void dispose() {
    x.close();
    y.close();
  }
}

1 Ответ

0 голосов
/ 20 декабря 2018

Я думаю, вам нужен метод объединитьЛат2 .

Возможно, вы захотите взглянуть и на это видео , которое я нашел очень полезным при выполнении чего-то подобного.

...