У меня есть форма регистрации с полями электронной почты, пароля и подтверждения пароля. Чего я хочу добиться, так это правильно проверить входные данные. Пока я использую наивный алгоритм для проверки электронной почты и пароля, и это хорошо. Для поля подтверждения пароля я хочу, чтобы оно соответствовало критериям действительного пароля, и значение должно совпадать со значением пароля. Должен ли я использовать потоковое преобразование или совершенно другой подход?
БЛОК АУТЕНТИФИКАЦИИ
final _emailTFController = TextEditingController();
final _passwordTFController = TextEditingController();
final _confirmPasswordTFController = TextEditingController();
Stream<String> get emailStream =>
_emailController.stream.transform(Validators.validateEmail);
Stream<String> get passwordStream =>
_passwordController.stream.transform(Validators.validatePassword);
ВАЛИДАТОРЫ
import 'dart:async';
class Validators {
static final validateEmail =
StreamTransformer<String, String>.fromHandlers(handleData: (email, sink) {
if (email.contains('@')) {
sink.add(email);
} else {
sink.addError('Enter a valid email');
}
});
static final validatePassword = StreamTransformer<String, String>.fromHandlers(
handleData: (password, sink) {
if (password.length > 4) {
sink.add(password);
} else {
sink.addError('Invalid passord, please enter more than 4 characters.');
}
});
}
TextEditingController
в поток? - person Daniel Oliveira   schedule 17.12.2019