【问题标题】:Flutter realtime database 9.0.6 List<Object?>' is not a subtype of type 'Map<dynamic, dynamic>'Flutter 实时数据库 9.0.6 List<Object?>' 不是 'Map<dynamic, dynamic>' 类型的子类型
【发布时间】:2022-02-01 22:51:43
【问题描述】:

将 Firebase 实时数据库更新到 9.0.X 后,我无法将 snapshot.value 转换为 Map 或 Map

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)));
});

我的模型课:

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>'

【问题讨论】:

    标签: flutter dart firebase-realtime-database


    【解决方案1】:

    似乎孩子中的keys 都是数字所以它已经是List

    试试这个:

     final _data1 = List.from(event.snapshot.value as dynamic).forEach((key, value) => 
    _notes.add(Item.fromRTDB(value)));
    

    【讨论】:

    • 非常感谢。它正在工作。在我的课堂上只需要更正:Item.fromRTDB(Map&lt;dynamic, dynamic&gt; data)
    • 酷...请接受。
    猜你喜欢
    • 2021-12-02
    • 2021-09-08
    • 1970-01-01
    • 2023-01-07
    • 2021-08-05
    • 2020-05-19
    • 2021-06-09
    • 2019-08-18
    • 2021-07-11
    相关资源
    最近更新 更多