繁体   English   中英

Flutter 实时数据库 9.0.6 列表<object?> ' 不是 'Map 类型的子类型<dynamic, dynamic> '</dynamic,></object?>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM