Объединение потоков в флаттер - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь объединить потоки в один поток, который возвращает логическое значение, которое показывает, имеют ли оба потока значения. Я использую новый поток, чтобы активировать кнопку, если оба значения не пусты. Вот мой blo c

// import 'package: async / asyn c .dart'; import 'dart: asyn c';

import 'package: 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();

На моем главном экране печать snapshot.data выдает мне значение NULL.

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',
              ),
            ),
          );
        }
      ),
    ),

Как лучше всего это воссоздать?

...