【发布时间】:2021-04-12 17:56:59
【问题描述】:
每当我尝试创建流或只是从 firestore 获取数据并将其映射到对象时,List 字段类型始终被视为动态
class Order{
String itemId;
String itemName;
List<String> itemImage;
Order({this.itemId, this.itemName, this.itemImage});
factory Order.fromMap(Map<String , dynamic> parsedData){
return Order(
itemId: parsedData['itemId'],
itemName: parsedData['itemName'],
itemImage: parsedData['listImage'],
);
}
}
这是调用流的代码
Stream<List<Order>> getOrder(int unit) {
return _firestore
.collection(orderPath)
.where("unit", whereIn: [unit])
.snapshots()
.map((QuerySnapshot snapshot) => snapshot.docs
.map((DocumentSnapshot e) => Order.fromMap(e.data()))
.toList());
}
当我使用流时总是发生错误
type 'List<dynamic>' is not a subtype of type 'List<String>' of 'function result'
只有当我像这样更改工厂方法 fromMap 时才会起作用
factory Order.fromMap(Map<String , dynamic> parsedData){
List<String> imageList = parsedData['itemImage'].map<String>((e) {
String image = e;
return image;
}).toList();
return Order(
itemId: parsedData['itemId'],
itemName: parsedData['itemName'],
itemImage: imageList ,
);
}
这真的是必要的步骤吗?因为我很确定列表只包含字符串,还是我做错了?谢谢你
【问题讨论】:
标签: flutter google-cloud-firestore