颤动实时数据库'InternalLinkedHashMap<Object?,Object?>'这个错误

Posted

技术标签:

【中文标题】颤动实时数据库\'InternalLinkedHashMap<Object?,Object?>\'这个错误【英文标题】:flutter realtime database 'InternalLinkedHashMap<Object?, Object?>' this error颤动实时数据库'InternalLinkedHashMap<Object?,Object?>'这个错误 【发布时间】:2021-08-19 21:04:21 【问题描述】:

我收到此错误。我很生气。

Stream<List<TestModel>> awayStream() async* 
List<TestModel> retVal = <TestModel>[];
_categoryCollectionReferance.once().then((DataSnapshot dataSnapshot) 
  print(dataSnapshot.value);
  retVal.add(TestModel.fromJson(dataSnapshot.value));
  return retVal;
);

错误:[ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: type '_InternalLinkedHashMap&lt;Object?, Object?&gt;' is not a subtype of type 'Map&lt;String, dynamic&gt;'

print(dataSnapshot.value); -- this perfectly working.

但我无法添加到列表中。 这是我的型号代码;

TestModel.fromSnapshot(DataSnapshot dataSnapshot) 
awayCurrentUser = dataSnapshot.value['awayCurrentUser'] ?? 0;
awayDate = dataSnapshot.value['awayDate'] ?? 0;
awayID = dataSnapshot.value['awayID'] ?? '';
awayMaxUser = dataSnapshot.value['awayMaxUser'] ?? 0;
awayPhotoUrl = dataSnapshot.value['awayPhotoUrl'] ?? '';
awayPrice = dataSnapshot.value['awayPrice'] ?? 0;
awayTitle = dataSnapshot.value['awayTitle'] ?? '';
awayUserPrice = dataSnapshot.value['awayUserPrice'] ?? 0;
awayWinner = dataSnapshot.value['awayWinner'] ?? '';
awayWinnerName = dataSnapshot.value['awayWinnerName'] ?? '';
isEnabled = dataSnapshot.value['isEnabled'] ?? true;
isFinished = dataSnapshot.value['isFinished'] ?? false;
isStatus = dataSnapshot.value['isStatus'] ?? true;

【问题讨论】:

【参考方案1】:

这是因为 datasnapShot 不是 'Map' 类型或其子类型在访问内部对象之前对其进行解码

这样试试

dataSnapshotDecoded=json.decode(dataSnapshot.value);

 retVal.add(TestModel.fromJson(dataSnapshotDecoded))

【讨论】:

我解决了这个问题。我有一个新问题。当我更改数据库上的数据时,无法更新数据列表。

以上是关于颤动实时数据库'InternalLinkedHashMap<Object?,Object?>'这个错误的主要内容,如果未能解决你的问题,请参考以下文章

我如何从颤动的firebase实时数据库中检索数据

无法读取表键但在颤动中获取实时数据库中的键值

如何在颤动中从实时数据库中获取特定数据?

agora 和 mux 和有啥不一样?在颤动中流式传输实时视频的最佳方式是啥?

如何从颤动的坐标中获取城市?

如何在颤动中每 x 秒从 api 获取数据?