![](/img/trans.png)
[英]flutter: type '_InternalLinkedHashMap<Object?, Object?>' is not a subtype of type 'Map<String, dynamic>'
[英]Flutter realtime database 9.0.6 List<Object?>' is not a subtype of type 'Map<dynamic, dynamic>'
将 Firebase 实时数据库更新到 9.0.XI 后,我无法将 snapshot.value 转换为 Map<dynamic, dynamic> 或 Map<String, dynamic>
final FirebaseDatabase database = FirebaseDatabase.instance;
database.setPersistenceEnabled(true);
itemRef = database.reference().child('_child1').child(_remoteConfigService.getStringLang);
itemRef.once().then((event) {
final _data1 = Map<String, dynamic>.from(event.snapshot.value as dynamic).forEach((key, value) =>
_notes.add(Item.fromRTDB(value)));
});
我的 Model Class:
class Item {
String key;
String code;
String spn;
Item({
required this.key,
required this.code,
required this.spn});
factory Item.fromRTDB(Map<String, dynamic> data) {
return Item(
key: data['key'] ?? '01',
code: data['code'] ?? 'A drink',
spn: data['spn'] ?? 'Beer');
}
toJson() {
return {
"key": key,
"code": code,
"spn": spn,
};
}
}
在所有选项中我都收到错误:
List<Object?>' is not a subtype of type 'Map<dynamic, dynamic>'
似乎孩子中的key
都是数字所以它已经是一个List
尝试这个:
final _data1 = List.from(event.snapshot.value as dynamic).forEach((key, value) =>
_notes.add(Item.fromRTDB(value)));
Future<Null> getStudies() async {
_data.clear();
DatabaseReference ref = FirebaseDatabase.instance.ref("etudes");
Query query = ref.orderByChild("type").equalTo(1);
// Get the Stream
Stream<DatabaseEvent> stream = query.onValue;
// Subscribe to the stream!
stream.listen((DatabaseEvent event) {
print('Event Type: ${event.type}'); // DatabaseEventType.value;
print('Snapshot: ${event.snapshot}'); // DataSnapshot
if(event.snapshot.exists) {
Map<String, dynamic> data = jsonDecode(jsonEncode(event.snapshot.value)) as Map<String, dynamic>;
data.forEach((key, value) async {
_data.add(Etude.fromJson(value));
});
notifyListeners();
} else {
//print("snapshot does not exists");
_loading = false;
notifyListeners();
}
});
notifyListeners();
return null;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.