Здесь я хочу проверить, присутствует ли документ в firestore или нет, если он присутствует, он должен выполнять часть if, иначе часть else, я использовал идентификатор документа, такой же, как идентификатор пользователя, это то, что я получил до сих пор :
class MapScreenState extends State<DashboardPage> {
FirebaseUser user;
Stream<DocumentSnapshot> getData() async*{
user = await FirebaseAuth.instance.currentUser();
yield* Firestore.instance.collection('Profile').document(user.uid).snapshots();
}
bool present = false;
checkIfPresentOrNot() async{
DocumentSnapshot ds = await Firestore.instance.collection("Profile").document(user.uid).get();
this.setState(() {
present = ds.exists;
});
}
@override
void initState() {
super.initState();
checkIfPresentOrNot();
getData();
}
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: getData(),
builder: (context, snapshot) {
if (present) {
var userDocument = snapshot.data;
return new showProfile(
name: userDocument['name'],
email: userDocument['email'],
pin: userDocument['pin'],
address: userDocument['address'],
);
}else{
return new showProfile(
name: "",
email: "",
pin: "",
address: "",
);
}
},
);
}
}
Но когда я запускаю этот код, выполняется только часть else, даже если документ присутствует в firestore. Как я могу решить эту проблему?