我想把两个观测值结合起来,当每一个都改变时,得到两个值。
根据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始终为空。
观察对象(从BehaviorSubject创建以恢复流中插入的最后一个值)MatchViewModel.LineUpplayers和MatchViewModel.PlayerSelectedState正在其他流生成器中使用,它们似乎工作正常。
这是怎么回事??

最佳答案

确保在两个流中都发布了一个事件,以便能够获取第一个值。

关于flutter - flutter 结合了可观察者,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55148599/

10-11 06:50