Невозможно получить более одной коллекции во Flutter из облачного хранилища - PullRequest
1 голос
/ 03 августа 2020

Hy Ребята, что я пытаюсь сделать, это получить 2 документа коллекции из базы данных Firestore и отобразить в моем флаттере, мой код:

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) {
    // Build a Form widget using the _formKey created above.
    return FutureBuilder(
      future: getData(),

, который позволяет мне получать данные из определенного c пользователь, но у меня есть другая форма с именем "shippingAddress", которая создает коллекцию, как показано ниже:

void createRecord() async {
    await databaseReference.collection("shippingAddress").add({
      'alias': '$alias',
      'shippingName': '$shippingName',
      'shippinglastName': '$shippinglastName',
      'street': '$street',
      'streetNumber': '$streetNumber',
      'zipNumber': '$zipNumber',
      'phoneNumber': '$phoneNumber',
      'textMessage': '$textMessage',
      'totalQuantity': '$totalQuantity',
      'totalWeight': '$totalWeight',
    }).then((value) {
      print(value.documentID);
    });
  }

, тогда мне нужно получить также указанную выше коллекцию, но я не знаю, как ... потому что на том же экране я получаю " user »для отображения только данных от указанного c пользователя, и мне также нужно получить коллекцию« shippingAddress », потому что в такой коллекции есть другие данные, которые должны отображаться, например, если я получаю

${snapshot.data.documents[index].data["email"]} or ${snapshot.data.documents[index].data["name"]}

, Я получил форму регистрации, она работает, и в моем виджете отображается адрес электронной почты или имя, но если я хочу, например, получить:

${snapshot.data.documents[index].data["alias"]}

, созданный в коллекции «shippingAddress», я не могу их получить

1 Ответ

0 голосов
/ 05 августа 2020

Я нашел решение. Прежде всего, getData от существующего пользователя:

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(
            itemCount: snapshot.data.documents.length,
              itemBuilder: (BuildContext context, int index) {
                return Column(
                    children: <Widget>[
                    Stream(),

и вызов Stream Builder с другой коллекцией:

lass 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(
                itemCount: snapshot.data.documents.length,

вот и все!

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