【发布时间】:2019-09-21 17:03:38
【问题描述】:
我正在尝试获取用户数据,但这样做时出现以下错误:
Exception: type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Map<String, dynamic>
我查看了类似问题的各种解决方案并相应地更改了我的代码(例如:使用 <String, dynamic> 而不是 <dynamic, dynamic>,但仍然看到此错误。
型号sn-p:
// Returns a Pro created from JSON
factory Pro.fromJson(Map<String, dynamic> json) {
Pro pro = Pro();
pro.uid = json['uid'];
pro.email = json['email'];
并如下获取此数据并在initState()中调用此方法:
Future<Pro> _getPro() async {
await userDatabaseReference.once().then((DataSnapshot snapshot) {
Map<String, dynamic> values = snapshot.value;
values["uid"] = snapshot.key;
print(snapshot.key);
Pro fetchedUser = Pro.fromJson(values);
setState(() {
this.pro = fetchedUser;
});
});
}
如果我使用Map<String, dynamic> values,则会在同一行出现错误,如果我使用Map<dynamic, dynamic> values,则会在以下位置出现错误:
Pro fetchedUser = Pro.fromJson(values)
因为,Pro.fromJson(values) 具有参数类型 Map<String, dynamic>,这与我用来声明 values 的参数类型相同,但仍然不确定它为什么会抛出错误。
【问题讨论】:
标签: firebase-realtime-database flutter