使用BLOC模式进行身份验证

时间:2018-09-27 21:11:42

标签: flutter

我正在尝试在包含登录和注册的基本身份验证表单上使用BLOC模式,其中登录和注册之间的唯一区别是注册具有一个额外的Confirm Password字段,该字段也有助于确定{{1 }}按钮应启用。

我有两个问题: 1.这是一个问题。当前,如果我输入通过Signup验证的登录名,然后切换到Login形式,则会启用Signup按钮,这是错误的,因为Signup仍然为空。如何解决这个问题? 2.我觉得有比实现Confirm Password验证和Confirm Password按钮验证更好的方法。我最初尝试为Signup创建一个验证器,但它必须同时使用密码并确认密码作为输入,但由于Confirm Password仅使用一个输入参数,因此无法使它起作用。这样做的更好的方法是什么?

StreamTransformer

2 个答案:

答案 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所建议。