我正在尝试在包含登录和注册的基本身份验证表单上使用BLOC模式,其中登录和注册之间的唯一区别是注册具有一个额外的Confirm Password
字段,该字段也有助于确定{{1 }}按钮应启用。
我有两个问题:
1.这是一个问题。当前,如果我输入通过Signup
验证的登录名,然后切换到Login
形式,则会启用Signup
按钮,这是错误的,因为Signup
仍然为空。如何解决这个问题?
2.我觉得有比实现Confirm Password
验证和Confirm Password
按钮验证更好的方法。我最初尝试为Signup
创建一个验证器,但它必须同时使用和密码并确认密码作为输入,但由于Confirm Password
仅使用一个输入参数,因此无法使它起作用。这样做的更好的方法是什么?
StreamTransformer
答案 0 :(得分:1)
尝试复制行为后,如果signupValid
具有true
值,我可以确认submitValid
流具有true
值,似乎是{{1 }}永远不会执行。
一种解决方法是,在将登录方式从登录更改为注册,反之亦然时,清除文本字段并向流中添加一个空字符串。
答案 1 :(得分:0)
对于您来说,已确认密码的更好方法是:
Stream<String> get passwordConfirmed => _confirmPasswordController.stream
.transform(validatePassword).doOnData((String confirmPassword){
if(0 != _passwordController.value.compareTo(confirmPassword)){
_confirmPasswordController.addError("Passwords do not match");
}
});
如 boeledi here所建议。