使用此代码,我得到了数据。
StreamBuilder(
stream: Firestore.instance.collection("Benutzer").document("Anton").collection("Einkaufsliste").snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index){
return ExpansionTile(
title: Text(snapshot.data.documents[index].documentID),
children: buildCheckBoxListTile(index, snapshot),
在buildCheckBoxListTile(index, snapshot)
函数中,我想从地图中获取数据。那么,我该如何解析这些数据?
谢谢您的帮助。
编辑: 我创建了一个Produkte类:
class Produkte{
Produkte({this.produktList});
List<Produkt> produktList;
factory Produkte.fromJson(Map<String, dynamic> parsedJson){
var list = parsedJson["Produkte"] as List;
List<Produkt> products = list.map((i) => Produkt.fromJson(i)).toList();
return Produkte(
produktList: products,
);
}
}
还有一个班级产品:
class Produkt{
Produkt({this.name, this.anzahl});
String name;
int anzahl;
factory Produkt.fromJson(Map<String, dynamic> parsedJson){
return Produkt(
name: parsedJson["Name"],
anzahl: parsedJson["Anzahl"]
);
}
}
现在当我这样称呼时:Produkte Hans = Produkte.fromJson(snapshot.data.documents[index].data);
引发以下异常:
I/flutter (18038): Another exception was thrown: type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Map<String, dynamic>'
答案 0 :(得分:0)
我有同样的问题。我正在使用json_serializable 软件包进行自动生成。
对我来说,从地图上删除演员类型很有帮助
factory Produkt.fromJson(Map parsedJson)
并允许在注释上添加任何地图
@JsonSerializable(anyMap: true)
flutter repository中对此主题进行了一些讨论。 HerrNiklasRaab也在那里发布了另一种解决方法:
factory Chat.fromJson(Map<String, dynamic> json) {
json["members"] = (json['members'] as List)
?.map((e) =>
e == null ? null : Map<String, dynamic>.from(e))
?.toList();
return _$ChatFromJson(json);
}