Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在颤振中组合流_Flutter_Dart_Rxdart - Fatal编程技术网

Flutter 在颤振中组合流

Flutter 在颤振中组合流,flutter,dart,rxdart,Flutter,Dart,Rxdart,我试图将流合并成一个流,该流返回一个布尔值,显示两个流是否都有值。如果两个值都不是空的,我将使用新流激活一个按钮。 这是我的阵营 //导入“包:async/async.dart”; 导入“dart:async” 导入“包:rxdart/rxdart.dart” class VotingBloc { final numVotes = PublishSubject<String>(); final pin = PublishSubject<String>();

我试图将流合并成一个流,该流返回一个布尔值,显示两个流是否都有值。如果两个值都不是空的,我将使用新流激活一个按钮。 这是我的阵营

//导入“包:async/async.dart”; 导入“dart:async”

导入“包:rxdart/rxdart.dart”

class VotingBloc {
   final numVotes = PublishSubject<String>();
   final pin = PublishSubject<String>();

  Function(String) get votesChanged => numVotes.sink.add;
  Function(String) get pinChanged => pin.sink.add;

Stream<bool> get submitCheck => CombineLatestStream.combine2(numVotes, pin, (a, b) => true);


 dispose() {
  numVotes.close();
  pin.close();
}
}

final votingBloc = VotingBloc();
class VotingBloc{
最终数值=PublishSubject();
最终pin=PublishSubject();
函数(字符串)get votesChanged=>numVotes.sink.add;
函数(字符串)get pinChanged=>pin.sink.add;
Stream get submitCheck=>CombineLatestStream.combine2(numVotes,pin,(a,b)=>true);
处置{
numVotes.close();
pin.close();
}
}
最终votingBloc=votingBloc();
在我的主屏幕中,打印snapshot.data会显示空值

Container(
      width: MediaQuery.of(context).size.width,
      padding: EdgeInsets.symmetric(horizontal: 5.0),
      child: StreamBuilder<Object>(
        stream: votingBloc.submitCheck,
        builder: (context, snapshot) {
          print(snapshot.data);
          return RaisedButton(
            // elevation: 5.0,
            onPressed: snapshot.hasData ? () => print('object') : null ,
            shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(25.0)),
            padding: EdgeInsets.all(15.0),
            color: Color(0xfff64c72),
            child: Text(
              'VOTE NOW',
              style: TextStyle(
                color: Colors.white,
                letterSpacing: 1.5,
                fontSize: 18.0,
                fontWeight: FontWeight.bold,
                fontFamily: 'OpenSans',
              ),
            ),
          );
        }
      ),
    ),
容器(
宽度:MediaQuery.of(context).size.width,
填充:边缘组。对称(水平:5.0),
孩子:StreamBuilder(
流:votingBloc.submitCheck,
生成器:(上下文,快照){
打印(快照数据);
返回上升按钮(
//标高:5.0,
onPressed:snapshot.hasData?()=>print('object'):null,
形状:圆形矩形边框(
边界半径:边界半径。圆形(25.0)),
填充:所有边缘设置(15.0),
颜色:颜色(0xfff64c72),
子:文本(
“现在投票”,
样式:TextStyle(
颜色:颜色,白色,
字母间距:1.5,
字体大小:18.0,
fontWeight:fontWeight.bold,
fontFamily:“OpenSans”,
),
),
);
}
),
),

我怎样才能最好地重新创建它?

您是否尝试过使用
Observable.CombineLatest2
Rx.CombineLatest2
,具体取决于您的Dart和RxDart版本?我之前参加过一个类似的教程,它使用了
Observable.CombineLatest2
我认为自从Dart上的2.6更新后,它应该使用
Rx.CombineLatest2
。我还认为@kobowo的建议对你有用。如果它不起作用,那么尝试使用Behavior subject并向其添加textfield代码。