Как использовать Streambuilder для копирования данных из одного документа и вставки их в другой в Firebase? - PullRequest
1 голос
/ 08 апреля 2020

У меня проблема с моим флаттерным приложением, которое использует firebase / firestore. Следующий код пытается скопировать данные из документа в одной коллекции, взять эти данные из этого документа и скопировать их в другой документ в другой коллекции. Однако, когда я запускаю код с некоторыми точками останова, я заметил, что всякий раз, когда вызывается функция, она пропускает строку Streambuilder. Если бы вы могли помочь мне, это было бы оценено. Я поместил ошибку в одну функцию.

Код:

copyDocument(String copyId) async {
    bool beingCalled;
    var createdAt;
    String chattingWith, id2, nickname, photoUrl;
    DocumentReference collectionRef = Firestore().collection('messages').document(id).collection('pastchats').document(copyId);
    return StreamBuilder<DocumentSnapshot> (
      stream: Firestore.instance.collection('messages').document(copyId).snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) {
          print('waiting...');  
          return CircularProgressIndicator(
            strokeWidth: 2,
          );
        } else {
          beingCalled = snapshot.data['beingCalled'];
          chattingWith = snapshot.data['chattingWith'];
          createdAt = snapshot.data['createdAt'];
          id2 = snapshot.data['id'];
          nickname = snapshot.data['nickname'];
          photoUrl = snapshot.data['photoUrl'];
          Firestore.instance.runTransaction((transaction) async {
            await transaction.set(
              collectionRef,
              {
                'beingCalled': beingCalled,
                'chattingWith': chattingWith,
                'createdAt': createdAt,
                "id" : id2,
                'nickname': nickname,
                'photoUrl': photoUrl,  
              },
            );
          }
        );       
        }
      },
    );
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...