FlutterFire DocumentSnapshot.data() 正在返回对象?
Posted
技术标签:
【中文标题】FlutterFire DocumentSnapshot.data() 正在返回对象?【英文标题】:FlutterFire DocumentSnapshot.data() is returning Object? 【发布时间】:2021-08-22 14:13:09 【问题描述】:我正在升级我的 Flutter 应用程序中的库,并转向 null-safety。我使用的是 cloud_firestore 2.2.1 版。
在我的模型中,我有一个获取文档快照的工厂方法,我收到了错误
“对象?”类型的值不能分配给“Map
”类型的变量。
factory Account.fromDoc(DocumentSnapshot doc)
if(doc.exists)
Map<String, dynamic> data = doc.data();
...
https://firebase.flutter.dev/docs/firestore/usage/ 的文档指出
如果文档存在,你可以通过调用 data 方法,返回 Map
,如果返回则返回 null 不存在
所以我不确定它为什么将它作为对象类型返回?当我期待 Map
【问题讨论】:
this 有帮助吗? 【参考方案1】:基本上你必须向 DocumentSnapshot 添加一个类型,这发生在我身上,这就是我解决它的方法:
factory Account.fromDoc(DocumentSnapshot<Map<String, dynamic>> doc) // here the type should be specified
if(doc.exists)
Map<String, dynamic> data = doc.data();
...
【讨论】:
感谢 Yazeed。我得到一个“'Map以上是关于FlutterFire DocumentSnapshot.data() 正在返回对象?的主要内容,如果未能解决你的问题,请参考以下文章
FlutterFire 消息:您的后台消息处理程序中发生错误
Firestore / flutterFire / type 'List<dynamic>' 不是类型 'List<bool>' 的子类型
在新的 FlutterFire API 中使用 setData 和 merge: true
FlutterFire DocumentSnapshot.data() 正在返回对象?