【问题标题】:Getting error in flutter dart application. The operator '[]' isn't defined for the type 'DocumentSnapshot'. Try defining the operator '[]' [duplicate]在颤振飞镖应用程序中出现错误。未为类型“DocumentSnapshot”定义运算符“[]”。尝试定义运算符'[]' [重复]
【发布时间】:2021-01-03 22:49:20
【问题描述】:
这是我的代码。我尝试改用 data() ,但也没有用。
Future getUserInterests(userId) async {
User currentUser = User();
await _firestore.collection('users').doc(userId).get().then((user) {
currentUser.name = user['name'];
currentUser.photo = user['photoUrl'];
currentUser.gender = user['gender'];
currentUser.interestedIn = user['interestedIn'];
});
return currentUser;
}
【问题讨论】:
标签:
firebase
flutter
dart
google-cloud-firestore
【解决方案1】:
您需要调用data() 才能访问DocumentSnapshot 中的数据。
Map<String, dynamic> data = user.data();
currentUser.name = data['name'];
【解决方案2】:
您正在运行什么版本的 firebase 软件包?新版本分别更改了get()和data()方法的操作符[]和getter data
Future getUserInterests(userId) async {
User currentUser = User();
await _firestore.collection('users').doc(userId).get().then((user) {
Map<String, dynamic> doc = user.data();
currentUser.name = doc['name'];
currentUser.photo = doc['photoUrl'];
currentUser.gender = doc['gender'];
currentUser.interestedIn = doc['interestedIn'];
});
return currentUser;
}
【解决方案3】:
好吧,您将user 变量视为Map<String, dynamic>(使用[] 访问器表示法),但错误告诉您它是DocumentSnapshot 的实例。
不确定DocumentSnapshot 有哪些字段(您使用的是什么库?)。您应该查看您使用的任何库的文档,以了解如何访问您需要的字段。