флаттер | Как проверить, есть ли документ в пожарном складе - PullRequest
0 голосов
/ 05 августа 2020

Здесь я хочу проверить, присутствует ли документ в 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. Как я могу решить эту проблему?

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