簡體   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