【问题标题】: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&lt;String, dynamic&gt;(使用[] 访问器表示法),但错误告诉您它是DocumentSnapshot 的实例。

        不确定DocumentSnapshot 有哪些字段(您使用的是什么库?)。您应该查看您使用的任何库的文档,以了解如何访问您需要的字段。

        【讨论】:

          猜你喜欢
          • 2020-12-20
          • 2020-12-09
          • 2021-06-11
          • 1970-01-01
          • 2020-10-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多