繁体   English   中英

如何使用 FlutterFire Firestore 和 Flutter 2.0 和 Null 从 Firebase 获取数据

[英]How do I get data from Firebase using FlutterFire Firestore and Flutter 2.0 with Null Safety

我收到代码“snapshot.Data()”的错误。 这是对 Firestore 的重大更改之一,快照现在属于“DocumentSnapshot<Object?>”类型。

BREAKING:通过数据获取器获取快照的数据现在是通过 data() 方法完成的。

新文档中提供的示例对我没有帮助。

“参数类型'对象?' 不能分配给参数类型'Map<String, dynamic>'"

我尝试了许多组合,但我无法摆脱错误。 另外,我没有使用 stream,我只想读取单个记录。

这是代码:

var snapshot = await _reference.doc(_user.uid).get();
return UserData.fromMap(snapshot.data());

这是 model “fromMap”:

factory UserData.fromMap(Map<String, dynamic> map) {
    return UserData(
      birthday: DateTime.fromMillisecondsSinceEpoch(map['birthday']),
      gender: map['gender'],
      isDarkMode: map['isDarkMode'],
      isMetric: map['isMetric'],
      name: map['name'],
      password: map['password'],
    );
  }

好的,找到了我的问题。 我有这样定义的“_reference”:

final  CollectionReference _reference = FirebaseFirestore.instance.collection('users');

我应该这样做:

final  CollectionReference<Map<String, dynamic>> _reference = FirebaseFirestore.instance.collection('users');

或者只是这样:

  final _reference = FirebaseFirestore.instance.collection('users');

将其更改为:

factory UserData.fromMap(Map<String, dynamic>? map) //added a "?" after dynamic.

这使您的 fromMap 方法接受可为空的值,理论上,如果文档不存在,您的 firebase 查询可以返回 null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM