调用DocumentSnapshot的containsKey方法提示未定义该如何解决
错误原因
你所使用的Flutter云数据库cloud_firestore2.0.0及以上版本对API做了破坏性更新,DocumentSnapshot的data从原本的存储字段的Map属性,修改为返回字段Map的方法。你直接调用document.data时获取到的是函数对象本身,并非存储字段的Map,因此调用containsKey方法时会抛出类型不匹配的错误。
修复方案
- 先调用
data()方法拿到字段映射后再判断字段是否存在,基础写法如下:
(document.data() as Map<String, dynamic>).containsKey('field_name')
- 空安全场景下的兼容写法:
// 若document为空或data返回null时,默认返回不存在 document.data()?.containsKey('field_name') ?? false
内容的提问来源于stack exchange,提问作者genericUser
相关产品推荐
相关产品推荐

