gpt4 book ai didi

authentication - 如何在Flutter中使用流转换器根据另一个输入字段的值验证输入

转载 作者:行者123 更新时间:2023-12-03 03:58:25 25 4
gpt4 key购买 nike

我有一个包含电子邮件,密码和确认密码字段的注册表格。我要实现的是正确验证输入。现在,我正在使用一个简单的算法来验证电子邮件和密码,这很好。对于确认密码字段,我希望它与有效密码的条件匹配,并且的值应与密码的值匹配。我要使用流转换还是完全不同的方法?

AUTHENTICATION BLOC

  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);

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

最佳答案

使用BehaviourSubject代替Stream Controller

final passwordController=BehaviorSubject<String>();
并使用带有doOnData方法的ConfirmPassword函数,如下所示
Stream<String> get confirmpassword =>
confirmpasswordController.stream.transform(confirmPasswordValidator)
.doOnData((String c){
// If the password is accepted (after validation of the rules)
// we need to ensure both password and retyped password match
if (0 != passwordController.value.compareTo(c)){
// If they do not match, add an error
confirmpasswordController.addError("Confirm Password donot match");
}
});

关于authentication - 如何在Flutter中使用流转换器根据另一个输入字段的值验证输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59298059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com