Данные, полученные даже в случае сбоя условия, вложили StreamBuilder для объектной фильтрации - PullRequest
0 голосов
/ 01 мая 2019

У меня есть база данных пользователей для супружества в Cloud Firestore, я хочу, чтобы незарегистрированный пользователь мог зарегистрироваться, затем зарегистрированный пользователь должен быть проверен человеком, а затем проверенные пользователи могут зарегистрировать супружескую учетную запись противоположного пола в ListTile через Стек.

Widget NameTile(AsyncSnapshot<dynamic> snapshot) {
    if(!snapshot.hasData) {
                    return CircularProgressIndicator();
                  }
                  else {
                    return ListView.builder(
                      itemCount: snapshot.data.documents.length,
                      //reverse: true,
                      //controller: _scrollController,
                      itemBuilder: (context, index){
                        return Card(
                          elevation: 8.0,
                          margin: new EdgeInsets.symmetric(horizontal: 10.0, vertical: 6.0),
                          child: Container(
                            decoration: BoxDecoration(color: Colors.white),
                            child: ListTile(
                              contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 10.0),

                          //     leading: CircleAvatar(
                          //     backgroundImage: NetworkImage(snapshot.data.documents[index].data['image']),
                          // ),

                          title: Text(
                            snapshot.data.documents[index].data['name'],
                            style:  Theme.of(context).textTheme.headline,
                            textAlign: TextAlign.center,
                          ),


                            // subtitle: Text("Intermediate", style: TextStyle(color: Colors.white)),
                            trailing:
                              Icon(Icons.keyboard_arrow_right, color: Colors.orangeAccent[700], size: 30.0),

                             //onTap: () => navigateToDetail(snapshot.data.documents[index]),

                            ),
                          ),
                        );
                      },
                    );
                  }
  }
StreamBuilder(
                stream: Firestore.instance.collection("Matrimonial").where("email", isEqualTo: _userEmail).limit(1).snapshots(),
                builder: (context, snapshot) {
                  if(snapshot.hasData)
                  {
                    return StreamBuilder(
                      stream: Firestore.instance.collection("Matrimonial").where("email", isEqualTo: _userEmail).where("verify", isEqualTo: 1).limit(1).snapshots(),
                      builder: (context, snapshot) {
                        if(snapshot.hasData)
                        {
                          return StreamBuilder(
                            stream: Firestore.instance.collection("Matrimonial").where("verify", isEqualTo: 1).where("email", isEqualTo: _userEmail).where("gender", isEqualTo: 'm').limit(1).snapshots(),
                            builder: (context, snapshot) {
                              if(snapshot.hasData)
                              {
                                //show female
                                return StreamBuilder(
                                  stream: Firestore.instance.collection("Matrimonial").where("verify", isEqualTo: 1).where("gender", isEqualTo: 'f').snapshots(),
                                  builder: (context, snapshot) {
                                    return NameTile(snapshot);
                                  },
                                );
                              }
                              else
                              {
                                //show male
                                return StreamBuilder(
                                  stream: Firestore.instance.collection("Matrimonial").where("gender", isEqualTo: 'm').snapshots(),
                                  builder: (context, snapshot) {
                                      return NameTile(snapshot);
                                  },
                                );
                              }
                            },
                          );
                        }
                        else
                        {
                          //not verified
                          return Text("Wait, till verification");
                        }
                      },
                    )

Если в поле «0» указано «Ждать подтверждения», то, если в базе данных отсутствует электронная почта, должно отображаться «Регистрация». Но он отображал виджет NameList даже в случае сбоя условия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...