问题描述
我似乎无法在不丢失快照的情况下将 QuerySnapshot 从一个类传递到另一个类,因此我试图找到解决方法 (see my post here)。我正在尝试使用 StreamBuilder 再次提取数据。
StreamBuilder (
stream: _db.collection('agency').doc(globals.agencyId).
collection('trxns').doc(globals.currentTrxnId).snapshots(),builder: (context,trxnSnapshot) { <<<< ERROR 1
if (trxnSnapshot.hasData) {
var outPut = trxnSnapshot.data(); <<<< ERROR 2
clientFNameController.text = trxnSnapshot.data.data['clientFName'] ?? ""; <<<< ERROR 3
}
)
我遇到了一些错误。
这些应该很容易解决,但我不知道该怎么做。
StreamBuilder<QuerySnapshot> (
stream: _db.collection('agency').doc(globals.agencyId).
collection('trxns').doc(globals.currentTrxnId).snapshots(),trxnSnapshot) {
if (trxnSnapshot.hasData) {
var outPut = (trxnSnapshot.data() as QueryDocumentSnapshot);
clientFNameController.text = trxnSnapshot.data.data['clientFName'] ?? "";
}
)
解决方法
您应该首先检查您收到的快照是否有任何数据。如果没有,就不可能调用 trxnSnapshot.data()
试试这个:
StreamBuilder (
stream: _db.collection('agency').doc(globals.agencyId).
collection('trxns').doc(globals.currentTrxnId).snapshots(),builder: (context,trxnSnapshot) {
if(trxnSnapshot.hasData){
var outPut = trxnSnapshot.data();
clientFNameController.text = trxnSnapshot.data.data['clientFName'] ?? "";
} else {
print("Do something,maybe show a loading widget");
}
)