android - 没有为“QuerySnapshot”类型定义吸气剂“文档”
问题描述
'for' 循环中使用的类型 'List<QueryDocumentSnapshot<Map<String, dynamic>>>' 必须使用可以分配给 'Map<dynamic, dynamic>'.dart(for_in_of_invalid_element_type) 的类型参数来实现 'Iterable'从此代码更改:
class CategoryServices {
String collection = "categories";
Firestore _firestore = Firestore.instance;
Future<List<CategoryModel>> getCategories() async =>
_firestore.collection(collection).getDocuments().then((result) {
List<CategoryModel> categories = [];
for (DocumentSnapshot category in result.documents) {
categories.add(CategoryModel.fromSnapshot(category));
}
return categories;
});
}
对此,但得到一个错误。我哪里做错了?
class CategoryModel {
String? image;
String? name;
CategoryModel({this.image, this.name});
// receiving data from server
factory CategoryModel.fromMap(map) {
return CategoryModel(image: map['image'], name: map['name']);
}
// sending data to our server
Map<String, dynamic> toMap() {
return {
'image': image,
'name': name,
};
}
}
class CategoryServices {
String collection = "category";
FirebaseFirestore _firestore = FirebaseFirestore.instance;
Future<List<CategoryModel>> getCategories() async =>
_firestore.collection(collection).get().then((result) {
List<CategoryModel> categories = [];
for (Map category in result.docs) { //error at this line
categories.add(CategoryModel.fromMap(category));
}
return categories;
});
}
解决方案
的元素result.docs
是QueryDocumentSnapshot
,而不是Map
。
我想你正在寻找:
for (QueryDocumentSnapshot category in result.docs) {
categories.add(CategoryModel.fromMap(category.data()));
}
return categories;
推荐阅读
- mysql - SQL查询字符串只有一个字符的差异
- java - 如何从服务器获取数据并在 Android 上填充 SQL 数据库?
- arrays - 基于两个或多个查找键填充列的数组公式?
- javascript - 如何通过按钮向下滚动到页面底部(通过特定的 javascript 函数)
- react-native - 按下时 React Native 按钮无法正常工作
- python - 将纸浆变量值添加到矩阵
- javascript - 我正在尝试使用 react 在我的应用中创建 Facebook 个人资料照片的实例
- ios - SPTSessionManager 未初始化或失败
- python - Python webscrape 没有从所有容器中打印
- excel - 在 Excel 表格中搜索单元格时出现类型不匹配错误