使用流生成器时数据未存储在列表变量中
Posted
技术标签:
【中文标题】使用流生成器时数据未存储在列表变量中【英文标题】:Data not store in List variable while use stream builder 【发布时间】:2022-01-13 04:04:36 【问题描述】:当我使用存储在列表变量中的 Firestore 查询数据时,但当我尝试在查询之外使用此数据时,它将不起作用。请帮助我在哪里犯错。
List<ContactsModelClass> _groupContactList1 ; //declare list variable
_groupCollection
.doc(widget.groupId)
.collection("groupContactList")
.get()
.then((docs)
showLog('--->>>>>>$docs.docs.length');
_groupContactList1 = List<ContactsModelClass>.generate(
docs.docs.length,
(index) => ContactsModelClass.fromJson(
docs.docs[index].data(),
),
); //Store data in list variable
print("init groupList:[$_groupContactList1.length]"); //get data
);
print(
"groupContactList list data:[$_groupContactList1.length]"); // can not access data which store above in code. why?
【问题讨论】:
【参考方案1】:因为稍后会调用then
回调,您可以在其中设置_groupContactList1
。但是你现在打印_groupContactList1.lenght
,还没有设置。
改用 await,试试下面的解决方案:
var docs = await _groupCollection.doc(widget.groupId).collection("groupContactList").get();
showLog('--->>>>>>$docs.docs.length');
_groupContactList1 = List<ContactsModelClass>.generate(
docs.docs.length,
(index) => ContactsModelClass.fromJson(docs.docs[index].data()),
);
print("groupContactList list data:[$_groupContactList1.length]");
【讨论】:
【参考方案2】:您需要使用 await
关键字来从 Firestore 中获取文档。一旦 Firestore 获取数据,然后显示或使用该列表。
【讨论】:
以上是关于使用流生成器时数据未存储在列表变量中的主要内容,如果未能解决你的问题,请参考以下文章