如何解决在 Flutter 应用中使用 Stream 填充 TextEditingController
我似乎无法在不丢失快照的情况下将 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");
}
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。