Я работаю над проектом флаттера, используя шаблон BLoC с RxDart. У меня есть посредник BLoC, который позволяет BLoC прослушивать изменения состояния.
Когда пользователь выбран (или добавлен счет), другой блок должен выдать обновленный список результатов для соответствующего игрока.
Следующий код является частью модульного теста. Оба метода имеют оператор print.
stateMediatorBloc.selectUser.add(user1);
stateMediatorBloc.addScore.add(score1);
stateMediatorBloc.addScore.add(score2);
stateMediatorBloc.selectUser.add(user2);
Для этого кода я бы ожидал последовательность печати:
Выберите пользователя1
Добавить оценку
Добавить оценку
Выберите пользователя2
На самом деле я получаю:
Выберите пользователя1
Добавить оценку
Выберите пользователя2
Добавить оценку
Вот код для методов-посредников:
Sink<Score> get addScore => _addedScore.sink;
var _addedScore = StreamController<Score>();
Sink<User> get selectUser => _selectedUser.sink;
var _selectedUser = StreamController<User>();
Может кто-нибудь подсказать, почему выбор пользователя2 происходит до добавления счета2?