Есть ли функция, аналогичная CombineLatest, только для 1 потока?

Я новичок в Rxdart, и я пробовал Combinelatest2 для двух типов потоков, например:

Observable<String> get email => _user.stream.transform(validateEmail);
  Observable<String> get password => _password.stream.transform(validatePassword);
  Observable<bool> get submitValid => Observable.combineLatest2(email, password,
          (checkEmail, checkPassword) => true);

в моем validateEmail и validatePassword:

final validateEmail= StreamTransformer<String, String>.fromHandlers(
      handleData: (user, sink){
        if(EmailValidator.validate(email)){
          sink.add(email);
        }else{
          sink.addError("email wrong Format!!");
        }
      }
  );

final validatePassword = StreamTransformer<String, String>.fromHandlers(
      handleData: (password, sink){
        if(password.length > 2){
          sink.add(password);
        }else{
          sink.addError("Password must be at least 3 characters");
        }
      }
  );

и это кнопка с экранов моей домашней страницы:

Widget submitButton(ChangePasswordBloc bloc){
    return StreamBuilder(
//      stream: bloc.submitValid,
      builder: (context, snapShot){
        return RaisedButton(
          child: Text("Change Password"),
          color: Colors.blue[400],
          onPressed: ()  {
            if(snapShot.hasData){

            }else{
              return null;
            }
          },
        );
      },
    );
  }

при использовании combinelatest2 я могу получить изменение двух видов излучения от наблюдаемого, и я могу включить / выключить свою кнопку, но если я хочу только наблюдать только электронную почту, как я могу это сделать? если отправитель из электронной почты правильный, то кнопка отправки включена или наоборот


person JEFF    schedule 18.04.2019    source источник


Ответы (1)


Для этого вы можете использовать карту. Вместо того, чтобы комбинировать электронную почту и пароль, вы можете сопоставить электронную почту и вернуть логическое значение.

Observable<bool> get submitValid => email.map((email) => true);
person nonybrighto    schedule 18.04.2019