Zec*_*eck 0 async-await dart firebase flutter google-cloud-firestore
我是 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;
}
}
Run Code Online (Sandbox Code Playgroud)
当我loadItems用以下代码打电话给我时:
Stream<ItemState> _mapLoadItemsToState() async* {
try {
final data = await this.repo.loadItems();
print('-------------------------------');
print(data.length);
} catch(e) {
print(e.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
它不是等待从 firebase 返回数据。我添加await了_firestore.collection('items').snapshots()但没有运气。
任何的想法?感谢您的任何建议。抱歉英语不好。
这是因为你在听的数据,您将需要得到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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1017 次 |
| 最近记录: |