Средство проверки пароля Flutter никогда не вызывается с помощью StreamTransformer

#flutter #dart

#flutter #dart

Вопрос:

Проблема

Я использую BLoC шаблон для проверки TextFields .

Для этого я использую StreamController class для sink потоков и listen для потоков.

Хотя, Validator он никогда не вызывается.

Классы и виджет

Это мой validator класс

 class Validators {
final validatePassword = StreamTransformer<String,String>.fromHandlers(
    handleData: (password,sink)
    {
      if(password.length > 4)
        {
          sink.add(password);
        }else{
          sink.add('Password must be atleast 5 characters');
      }
    }
  );
}
 

Затем я создаю BLoC класс

 class Bloc with Validators{
 final _passwordController = StreamController<String>();
 Function(String) get addPasswordStream => _passwordController.sink.add;
 Stream<String> get getPasswordStream => _passwordController.stream.transform(validatePassword);
}
final bloc = Block ()
 

И добавляет его в my Cusotm Widget с помощью StreamBuilder класса

   Widget passwordField(){
    return StreamBuilder(
      stream: bloc.getPasswordStream,
        builder: (context,snapshot){
          return TextField(
            onChanged: bloc.addPasswordStream,
            obscureText: true,
            decoration: InputDecoration(
                hintText: 'password',
                labelText: 'password',
                errorText: snapshot.error
            ),
          );
        },
    );
  }
 

Я реализовал тот же метод для средства email проверки, и он работает, но по какой-то причине, когда я также применяю его к паролю TextField , это не так. Я использовал flutter clean , и flutter run ничего не изменилось. Что я полностью пропустил?

Комментарии:

1. если вы используете snapshot.error where sink.addError вызывается тогда? или я что-то здесь пропустил?

2. я полностью пропустил это в валидаторе, спасибо, теперь работает нормально