【问题标题】:How can i check username availability in my flutter firebase app如何在我的颤振 Firebase 应用程序中检查用户名可用性
【发布时间】:2020-08-12 22:48:42
【问题描述】:

我正在尝试检查我的 Flutter 和 Firebase 应用程序中是否已使用用户名,但我遇到了一些问题。 我能够查询用户的集合,并将文本表单输入中保存的名称字符串与数据库中已有的名称进行比较,效果非常好。但我的问题是,当用户取名并且同一用户尝试保存他的个人资料而不更改他的名字时,他会收到消息用户名已被占用,这意味着他无法保存他的个人资料,因为他已经取了自己的名字。 我想要一个解决方案,如果用户没有修改他或她的用户名而不经过用户名已经被处理,他或她可以保存他的个人资料。不知道是否可以添加if语句来检查当前用户名是否等于文本字段中的用户名?或帮助任何有效的解决方案。 请这些是我下面的代码

//checks fields of user collection and compares the 
 //string _username with the userName of each user.
 final QuerySnapshot result = await Firestore.instance
      .collection('users')
      .where('userName', isEqualTo: _userName)
      .getDocuments();

    //converts results to a list of documents
  final List<DocumentSnapshot> documents = 
 result.documents;

  //checks the length of the document to see if its 
   //greater than 0 which means the username has already been taken 
   the name
if (documents.length > 0) {
    print(_userName + ' is already taken choose 
    another name');
 }else{
   print(_userName + ' are you sure you want to use 
    this name');
  }

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    我认为一个解决方案是仅在用户更改其用户名时检查是否使用此用户名!因此,如果用户使用已使用的用户名只是保存他的个人资料而不更改他的用户名,您不必担心。

    【讨论】:

    • 非常感谢您的回答。我有这个想法,但用代码实现它是我的问题。
    • Flutter 文本字段中有一个名为 onChanged 的​​参数,因此您可以使用该参数,然后将问题中的代码转换为方法,以便每当文本字段发生更改时,该方法将运行检查以确保该用户名尚未被占用。
    • 非常感谢。使用 setState 将上述代码作为方法调用,该方法在文本字段的 onChanged 参数上使用或不使用用户名时会更改 bool 值,效果非常好。感谢大家的贡献。
    • 我刚刚注意到一个新问题,当 onChanged 运行时,它会比较文本字段的先前值而不是最近值。例如,如果一个用户正在使用 James,他将他的名字更改为没有 s 的 Jame,他会收到错误 James is already taken not Jame is already used 如果他继续输入 Jam without e,他会得到 Jame is already taken not果酱。我有办法解决吗?
    • 哦,是的,这很可能是因为您在提交时设置了 TextFields 值,但是如果您只是在更改时更改该 TextField 的值,并且在检查数据库之前它将检查新更新的 TextField 值数据库!
    【解决方案2】:

    是的,如果您在 firestore 作为后端...您不能在注册页面中显示查询流以获取用户名建议以获取可用性 bcoz 您必须将 firestore 规则设置为不安全并允许未经授权的用户读写您的数据库...所以更好在该注册页面之后推送一个新页面,您可以在其中放置用户名字段,在这种情况下,您已经注册并登录,因此 Firestore 安全规则不会侵入...... 快乐编码:)

    【讨论】:

      猜你喜欢
      • 2019-07-18
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 2018-12-22
      • 2020-08-05
      • 2020-06-20
      相关资源
      最近更新 更多