NoSuchMethodError:在 null 上调用了方法“[]”。接收方:空。尝试调用:[]("name")
Posted
技术标签:
【中文标题】NoSuchMethodError:在 null 上调用了方法“[]”。接收方:空。尝试调用:[]("name")【英文标题】:NoSuchMethodError: The method '[]' was called on null. Receiver: null. Tried calling: []("name") 【发布时间】:2020-08-04 14:43:53 【问题描述】:我正在尝试从 firestore 中检索单个文档,当文档存在时它应该返回数据,当文档不存在时它应该返回空数据,到目前为止我尝试了什么:
@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"],
);
,
);
但我收到此错误
【问题讨论】:
不应该是Firestore.collection
而应该是Firestore.instance.collection
?
@Captivity 不应该。
【参考方案1】:
snapshot.data
为 null 因此您会收到该错误,很可能 user.uid
为 null 这就是您没有获得任何数据的原因,您必须执行以下操作:
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(),
【讨论】:
以上是关于NoSuchMethodError:在 null 上调用了方法“[]”。接收方:空。尝试调用:[]("name")的主要内容,如果未能解决你的问题,请参考以下文章
例外:NoSuchMethodError:在 null 上调用了 getter 'uid'。接收方:null 尝试调用:uid
Flutter:NoSuchMethodError:方法 'fetchByID' 在 null 上被调用。接收方:null 尝试调用:fetchByID(2)
NoSuchMethodError:在 null 上调用了方法 '[]' - Flutter
NoSuchMethodError:方法 'ancestorStateOfType' 在 null 上被调用