У меня есть база данных пользователей для супружества в 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 даже в случае сбоя условия.