【发布时间】:2020-04-28 23:10:15
【问题描述】:
我尝试搜索其他问题,但唯一与此类似的问题在 JavaScript 而不是 Dart/Flutter 中有答案。我正在尝试将我的 Firebase 实时数据库中的列表作为List<BaseModel> 获取到我的应用程序中@
到目前为止,从我在网上搜索的内容来看,我认为DataSnapshot 的结果是我可以解析的地图,所以我尝试了一下,但得到了这个错误:List<dynamic>' is not a subtype of type 'Map<dynamic, dynamic>
我的代码:
Future<List<BaseModel>> getList(
{DatabaseReference query, Models modelType}) async {
List<BaseModel> list = new List();
DataSnapshot snap = await query.once();
Map<String, dynamic> json = Map.from(snap.value);
json.forEach((key, value) {
list.add(BaseModel(model: modelType, key: key, snapshot: value));
});
return list;
}
奇怪的是,即使我尝试解析非列表模型,我也会得到同样的错误。
我的数据库结构如下:
更新:
基础模型:
abstract class BaseModel {
factory BaseModel({Models model, String key, Map map}) {
switch (model) {
case Models.MyModel:
return MyMod.fromSnapshot(key: key, map: map);
break;
default:
throw ("Not a valid model.");
}
}
}
我的模特:
MyModel.fromSnapshot({String key, Map map}) {
_id = key;
_title = map['title'];
}
我的 Firebase 查询只是 .child("Root") 的数据库引用
【问题讨论】:
-
能否分享您的 BaseModel 和 Firebase 查询?
-
附言。我可以只添加 100,因为我存储的项目数量少于每个节点的数量,但是如果您的密钥没有上限,那么您只需要对其进行编码,以便它以非零值开头,我猜。
-
您好,我添加了 BaseModel 和查询