微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter搜索用户名是否存在

如何解决Flutter搜索用户名是否存在

你好,我在我的应用程序中实现了GestureDetector,每当有人点击该按钮(该按钮是用户名搜索按钮)时,就会激活initateSearch函数。但是,当有人键入一个不存在的用户名时,该用户名应该运行_showSettingPanelFornoplayerFound()方法,那么有人知道为什么没有这种情况。有了这段代码,即使我在文本字段中点击一个现有用户函数_showSettingPanelFornoplayerFound()也会每次显示

 initiateSearch() async {

    if(Firestore.instance.collection("SerX")
        .where("Username")
        .get() != searchEditingController.text){

      _showSettingPanelFornoplayerFound();

    }else if(searchEditingController.text.isEmpty){
      _showSettingPanelForNoEnterSomething();
    }else if(searchEditingController.text.isNotEmpty){
      setState(() {
        isLoading = true;
      });
      await databaseMethods.searchByName(searchEditingController.text)
          .then((snapshot){
        searchResultSnapshot = snapshot;
        print("$searchResultSnapshot");
        setState(() {
          isLoading = false;
          haveUserSearched = true;
        });
      });
    }
  }

解决方法

您应该使用

                var abc = await FirebaseFirestore.instance
                    .collection("Your Collection Name")
                    .where("Username",isEqualTo: "Whatever")
                    .get();
                if (abc.docs.length == 0)//not found
                else 
                //found and you could continue with it

这应该是您的代码

initiateSearch() async {
if(searchEditingController.text.isEmpty){
  _showSettingPanelForNoEnterSomething();
}
else{
  var abc = await FirebaseFirestore.instance.collection("SerX")
    .where("Username",isEqualTo: searchEditingController.text).get();

if(abc.docs.length==0){
    _showSettingPanelForNoPlayerFound();
}
else
{

  setState(() {
    isLoading = true;
  });
  await databaseMethods.searchByName(searchEditingController.text)
      .then((snapshot){
    searchResultSnapshot = snapshot;
    print("$searchResultSnapshot");
    setState(() {
      isLoading = false;
      haveUserSearched = true;
    });
  });
}
}

注释(如果不适用于该错误)。使用最新的FireStore版本

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。