查询不执行 if 语句

时间:2021-06-26 17:15:29

标签: firebase flutter google-cloud-firestore

此查询没有正确执行 if 语句,因此即使应该执行,它也不会执行 else 语句 (它只是执行“确认”,即使应该执行,也不执行“通过不正确”)

              StreamBuilder(
                  stream: FirebaseFirestore.instance
                      .collection('Invetatons').where('pin',isEqualTo: widget.npasscode)
                      .snapshots(),
                  builder:
                      (BuildContext context, AsyncSnapshot snapshot) {

                    if (!snapshot.hasData  ) {
                      return Center(
                        child: CircularProgressIndicator(),
                      );
                    } else {
                      var qr = snapshot.data.docs;
                      return ListView.builder (
                          physics: const NeverScrollableScrollPhysics(),
                          shrinkWrap: true,
                          scrollDirection: Axis.vertical,
                          itemCount: snapshot.data.docs.length,
                          itemBuilder: (BuildContext context, int index) {
                          if(qr[index]['pin'] == widget.npasscode){
                              return Text('Confirm');}
                           if(qr[index]['pin'] != widget.npasscode){
                            return Text(' Pass not correct'); }
                          }
                      );
                    }})

1 个答案:

答案 0 :(得分:0)

您查询错误。您正在尝试仅查询 pin 等于 widget.npasscode 的那些文档。请删除查询,您将获得所需的功能。

                              StreamBuilder(
              stream: FirebaseFirestore.instance
                  .collection('Invetatons').where('pin',isEqualTo: widget.npasscode)
                  .snapshots(),
              builder:
                  (BuildContext context, AsyncSnapshot snapshot) {

                if (!snapshot.hasData  ) {
                  return Center(
                    child: CircularProgressIndicator(),
                  );
                } else {
                  var qr = snapshot.data.docs;
                  if(qr.length==0){
                     return Text(' Pass not correct'); 
                  }
                  return ListView.builder (
                      physics: const NeverScrollableScrollPhysics(),
                      shrinkWrap: true,
                      scrollDirection: Axis.vertical,
                      itemCount: snapshot.data.docs.length,
                      itemBuilder: (BuildContext context, int index) {
                      if(qr[index]['pin'] == widget.npasscode){
                          return Text('Confirm');}
                      
                      }
                  );
                }})