Я хочу объединить две наблюдаемые и получить оба значения при изменении каждого из них.
Согласно https://pub.dartlang.org/documentation/rxdart/latest/rx/Observable/combineLatest2.html и его мраморной диаграмме, это именно то, что я хочу.
Итак, у меня есть:
var observable = CombineLatestStream.combine2(_matchViewModel.lineUpPlayers, _matchViewModel.playerSelectedState, (lineUpPlayers, playerSelectedState) {
return [lineUpPlayers, playerSelectedState];
});
return Stack(children: <Widget>[
Align(
alignment: Alignment.topRight,
child: Padding(
padding: EdgeInsets.all(8.0),
child: _buildFormationSelector(match)
)),
StreamBuilder(stream: observable, builder: (context, snapshot) {
if(snapshot.data == null) {
return new CircularProgressIndicator();
} else {
Map<String, Player> lineUpPlayers = snapshot.data[0];
bool playerSelectedState = snapshot.data[1];
return Column(
mainAxisAlignment: MainAxisAlignment
.spaceEvenly,
children: _buildFormation(match, lineUpPlayers)
);
}
})
]);
Проблема в том, что snapshot.data всегда имеет значение null.
Объекты obsevables (созданные из BehaviorSubject для восстановления последнего значения, вставленного в поток) _matchViewModel.lineUpPlayers и _matchViewModel.playerSelectedState используются в других StreamBuilders и, похоже, работают правильно.
Что не так с этим ??