飞镖应用程序中出现错误。没有为“ DocumentSnapshot”类型定义运算符“ []”。尝试定义运算符'[]'

时间:2020-09-17 04:33:19

标签: firebase flutter dart google-cloud-firestore

这是我的代码。我尝试使用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;
  }

3 个答案:

答案 0 :(得分:0)

您需要调用data()才能访问DocumentSnapshot内部的数据。

Map<String, dynamic> data = user.data();
currentUser.name = data['name'];

答案 1 :(得分:0)

您正在运行哪个Firebase软件包版本?新版本分别更改了方法[]data的运算符get()和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;
}

答案 2 :(得分:0)

好吧,您正在将user变量视为Map<String, dynamic>(使用[]访问器表示法),但是错误告诉您它是{{ 1}}。

不确定DocumentSnapshot包含哪个字段(您使用的是哪个库?)。您应该查看所使用的任何库的文档,以了解如何访问所需的字段。