如何正确调用等待?
Posted
技术标签:
【中文标题】如何正确调用等待?【英文标题】:How to call await correctly? 【发布时间】:2019-08-27 23:00:15 【问题描述】:我是 Flutter 和 Dart 的新手。我有以下代码:
class ItemRepository
final Firestore _firestore = Firestore.instance;
Future<List<Item>> loadItems() async
List<Item> itemList = [];
_firestore.collection('items').snapshots().listen((data)
data.documents.forEach((doc)
print("------- KODE: $doc['kode']");
itemList.add(Item(doc['kode'], doc['name']));
);
);
return itemList;
当我使用以下代码拨打我的loadItems
时:
Stream<ItemState> _mapLoadItemsToState() async*
try
final data = await this.repo.loadItems();
print('-------------------------------');
print(data.length);
catch(e)
print(e.toString());
无需等待从 Firebase 返回数据。我将await
添加到_firestore.collection('items').snapshots()
但没有运气。
有什么想法吗? 感谢您的任何建议。抱歉英语不好。
【问题讨论】:
【参考方案1】:那是因为您正在收听数据,您需要先获取 Future<QuerySnapshot>
然后再获取 documents
。
试试这样的:
Future<List<Item>> loadItems() async
final List<Item> itemList = (await Firestore.instance.collection('items').getDocuments()).documents.map((snapshot) => Item(doc['kode'], doc['name'])).toList();
return itemList;
【讨论】:
以上是关于如何正确调用等待?的主要内容,如果未能解决你的问题,请参考以下文章