繁体   English   中英

仅在第二次单击后才触发验证

[英]Validation triggered only after clicking for the 2nd time

我还是新手。 我正在尝试创建一个注册表单。 目前,我在验证Firestore中是否已经存在用户名时陷入困境。 我设法创建了功能,并且效果很好。 但是,当我尝试在验证器中实现该功能时,当我第一次单击它时,它不会显示错误。 仅当我第二次单击时,才会显示错误。 有人知道为什么吗? 以及我该如何解决?

    Future<bool> _checkIfUsernameExists(String username) async {
      final QuerySnapshot result = await Firestore.instance
          .collection('users')
          .where('username', isEqualTo: username)
          .limit(1)
          .getDocuments();
      final List<DocumentSnapshot> documents = result.documents;
      return documents.length == 1;
    }

    bool _userExist = false;
    _checkUserValue<bool>(String user) {
      _checkIfUsernameExists(user).then((val) {
        if (val) {
          print("Username already exists");
          _userExist = val;
        } else {
          print("Username is available");
          _userExist = val;
        }
      });
      return _userExist;
    }

//username textbox
    final _username = Container(
      child: TextFormField(
        decoration: InputDecoration(labelText: username),
        validator: (input) =>
            _checkUserValue(input) ? msg_username_exists : null,
        onSaved: (input) => _stringUsername = input.toLowerCase().trim(),
      ),
    );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM