NoSuchMethodError:方法'[]'在null上调用。接收者:null。尝试调用:[](“ name”)

时间:2020-08-04 14:43:53

标签: firebase flutter dart google-cloud-firestore

我正在尝试从firestore中的flutter中检索单个文档,当存在文档时,它应该返回数据,而当不存在文档时,它应该返回空数据,到目前为止,我尝试过:

  @override
  Widget build(BuildContext context) {

    return StreamBuilder(
      stream: Firestore.instance.collection('Profile').document(user.uid).snapshots(),
 
      builder: (context, snapshot) {

        if (!snapshot.hasData) {
          return new showProfile(
            name: "null",
            email: "null",
            pin: "null",
            state: "null",
          );
        }else {
          var userDocument = snapshot.data;
          return new showProfile(
            name: userDocument["name"],
            email: userDocument["email"],
            pin: userDocument["pin"],
            state: userDocument["state"],
          );
        }
      },
    );
  }

但我收到此错误

enter image description here

1 个答案:

答案 0 :(得分:1)

snapshot.data为空,因此您会收到该错误,很可能user.uid为空,这就是为什么没有获取任何数据的原因,您必须执行以下操作:

Stream<DocumentSnapshot> getData() async*{
var user = await FirebaseAuth.instance.currentUser();
yield* Firestore.instance.collection('Profile').document(user.uid).snapshots()
}

然后在StreamBuilder内使用方法getData()

   return StreamBuilder(
      stream: getData(),