FutureBuilder 中的 DocumentSnapshot :状态不佳:无法获取不存在的 DocumentSnapshotPlatform 上的字段

时间:2021-01-23 17:56:38

标签: firebase flutter google-cloud-firestore flutter-web

我一直在努力解决一个错误,这显然是由于我尝试在 FutureBuilder 中使用的 DocumentSnapshot 的新更改 你可以在下面看到我是如何使用它的:

body: FutureBuilder(
  future: usersRef.doc(widget.userId).get(),
  builder: ( context,  snapshot) {
    List<Widget> children;
    if (!snapshot.hasData) {
      return Center(
        child: CircularProgressIndicator(),
      );
    }
    else if (snapshot.hasData) {
      UserModel user = UserModel.fromDoc(snapshot.data);
factory UserModel.fromDoc(DocumentSnapshot doc) {
  return UserModel(
    id: doc.id,
    name: doc['name'],
    username: doc['username'],
    password: doc['password'],
    profileImageUrl: doc['profileImageUrl'],
    email: doc['email'] ,
    userIds: doc['userIds'] ?? '',
  );
}

我遇到了这个错误:

The following StateError was thrown building FutureBuilder<DocumentSnapshot>(dirty, state: _FutureBuilderState<DocumentSnapshot>#46a8d):
Bad state: cannot get a field on a DocumentSnapshotPlatform which does not exist

我已经尝试使用我在这个 github 问题 (https://github.com/FirebaseExtended/flutterfire/issues/3826) 上找到的解决方案来解决它,但它并没有真正解决它。
如果你们中的任何人帮助我,我将不胜感激 谢谢

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,在访问它之前还没有找到检查字段是否存在的方法,所以我的解决方法如下

,(?=[^"]*"[^"]*(?:"[^"]*"[^"]*)*$)