【发布时间】:2022-01-05 15:13:06
【问题描述】:
尽管我首先将其作为地图上传,但我在从 Firebase RealtimeDatabase 作为地图获取数据时遇到了一些问题。我看到的所有解决方案都是您应该将 snapshot.value 转换为传入的数据类型,但没有迭代对我有用。我已经能够在快照值上调用toString() 并且我已经验证它是一个 Map 但编译器甚至不允许我将它转换为 Map 更不用说运行它了。如果我尝试使用动态来防止该编译错误,我仍然会得到这个 Unhandled Exception: type '_InternalLinkedHashMap<Object?, Object?>' is not a subtype of type 'Map<String, dynamic>?' in type cast。
这就是我所做的,
Future<Map<String, dynamic>> getBasicDetail(
DatabaseReference databaseReference) async {
DatabaseReference imageURLevent = databaseReference.child('basicDetail');
final snapShot = await imageURLevent.get();
return Map<String, dynamic>.from(
snapShot.value as Map<String, dynamic>? ?? {});
}
Future<void> readProfileData({required String userId}) async {
DatabaseReference ref = FirebaseDatabase.instance.ref("users/$userId");
final basicDetail = await getBasicDetail(ref);
// Print the data of the snapshot
debugPrint(basicDetail.toString());
}
我已经尝试了解析这些数据的所有可能组合,但没有任何效果。出于某种原因,在示例和视频中,当您将右侧投射到 Map<String,dynamic> 时,您不会收到任何错误,但我的 IDE 甚至不允许我这样做。我也试过 Map.from() 似乎是一种流行的方法,但我的简单方法会引发运行时错误。
为什么来自https://www.youtube.com/watch?v=sXBJZD0fBa4&ab_channel=Firebase
一边工作一边工作
event.snapshot.value 看起来也有效
[log] {bloodGroup: gh, imageURL: /data/user/0/com.piyushlimited.buzzai/app_flutter/image_picker7287835118545461685.jpg, fullName: Henry Nana Adu, weight: 523, dateOfBirth: 11/11/11, licenseNumber: 256489, age: 28}
我可以通过引用它的完整路径来访问一个数据值,但我有一个大地图,我不能为每个类别中的每个值都这样做。这似乎既昂贵又浪费时间。我花了几天时间尝试了很多事情,所以请记住这一点。
【问题讨论】:
-
尝试一次 - snapShot.value as Map
? ?? {}); -
event.snapshot.value 返回的值和类型是什么?
-
event.snapshot.value 返回 _InternalLinkedHashMap
-
@Diwyansh 你的建议不起作用我仍然得到未处理的异常:类型 '_InternalLinkedHashMap
-
能否打印 event.snapshot.value 并将打印结果添加到您的问题中?
标签: flutter dart firebase-realtime-database