У меня проблема с моим флаттерным приложением, которое использует 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,
},
);
}
);
}
},
);
}