Получение данных Cloud Firestore только для пользователя, вошедшего в приложение Flutter - PullRequest
0 голосов
/ 05 августа 2020

Я хочу получить данные из Cloud Firestore только для пользователя, вошедшего в приложение. Я использую Auth Firebase, и я создал метод для извлечения некоторых документов из определенной c коллекции, называемой «пользователь», и он работает, и он показывает правильное имя зарегистрированного пользователя и пользователя, зарегистрированного в моей форме. Теперь я собираю в другой форме другую коллекцию Firestore под названием «shippingAddress», и документы из коллекции «shippingAddress» должны отображаться в приложении только для указанного c пользователя, вошедшего в приложение. но этого не происходит, любой зарегистрированный пользователь получил одинаковые данные от всех пользователей, кроме имени и адреса электронной почты. это мой код:

final databaseReference = Firestore.instance;

  Future<QuerySnapshot> getData() async {
    var firebaseUser = await FirebaseAuth.instance.currentUser();
    return await Firestore.instance
        .collection("user")
        .where("email", isEqualTo: firebaseUser.email)
        .getDocuments();
  }

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: getData(),
      builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.connectionState == ConnectionState.done) {
          return ListView.builder(
              shrinkWrap: true,
              itemCount: snapshot.data.documents.length,
              itemBuilder: (BuildContext context, int index) {
                return Column(
                  children: <Widget>[
                    Stream(),
                  ],
                );
              });
        } else if (snapshot.data == null) {
          return Center(child: CircularProgressIndicator());
        }
        return Center(child: CircularProgressIndicator());
      },
    );
  }
}

class Stream extends StatefulWidget {
  @override
  _StreamState createState() => _StreamState();
}

class _StreamState extends State<Stream> {

  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: Firestore.instance.collection('shippingAddress').snapshots(),
      builder: (context, snapshot) {
//        if (!snapshot.hasData) return Text('Loading data please Wait');
        return Column(
          children: <Widget>[
            Container(
              height: 1000,
              child: ListView.builder(
                shrinkWrap: true,
                itemCount: snapshot.data.documents.length,
                itemBuilder: (BuildContext context, int index) {
                  return Card(
                    color: Color(0xFF1f2032),
                    elevation: 15,
                    child: Container(
                      width: 60,
                      height: 60,
                      child: Row(
                        mainAxisAlignment: MainAxisAlignment.spaceAround,
                        children: <Widget>[
                          
                          Text(
                            snapshot.data.documents[index]['alias'],
                            style: TextStyle(
                                color: Colors.white,
                                fontWeight: FontWeight.bold),
                          ),
                        ],
                      ),
                    ),
                  );
                },
              ),
            ),
          ],
        );
      },
    );
  }
}


пожалуйста, помогите, я застрял в этом. вот скриншот моей базы данных: Экран базы данных

Коллекции пользователей

1 Ответ

1 голос
/ 05 августа 2020
**can you share the Database image? 

если вы хотите указать c информацию о пользователе, вам необходимо использовать этот метод

 Firestore.instance
    .collection('talks')
    .document('document-name')
    .get()
    .then((DocumentSnapshot ds) {
  // use ds as a snapshot
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...