Flutter 如何进入 Future<DocumentSnapshot<Map<String、dynamic>>> inner map

Flutter How to reach into Future<DocumentSnapshot<Map<String, dynamic>>> inner map

提问人:Yarin0600 提问时间:7/9/2022 更新时间:7/9/2022 访问量:2046

问:

我需要有关涉及 firebasefirestore 的 flutter 代码的帮助。 这是我的代码。我想从数据库中检索地图中的image_url。

    final userData = FirebaseFirestore.instance
    .collection('users')
    .doc(FirebaseAuth.instance.currentUser.uid)
    .get();

但是在 userData 中,它并不完全是映射。 它是一个 Future<DocumentSnapshot<Map<String,动态>>>。 这就是获得回报的原因。我的问题是,我如何确定 Map<String、动态范围>? 我的意思是获取userData['image_url']...?因为我收到此错误: 未为类型“Future<DocumentSnapshot<Map<String, dynamic>>>”定义运算符“[]”。 多谢!

flutter firebase 谷歌云 firestore flutter-future

评论

1赞 Timur 7/9/2022
如果是将来的函数,则需要在它前面添加 await 关键字。这里;final userData = 等待 FirebaseFirestore... 。然后你就可以达到这个值了

答:

1赞 Frank van Puffelen 7/9/2022 #1

如 Firebase 文档中有关获取文档的内容所示,即:

final docRef = db.collection("users").doc(FirebaseAuth.instance.currentUser.uid);
docRef.get().then(
  (DocumentSnapshot doc) {
    final data = doc.data() as Map<String, dynamic>;
    // ...
  },
  onError: (e) => print("Error getting document: $e"),
);

您也可以使用 Timur 评论过,在这种情况下,它将是:await

final docRef = db.collection("users").doc(FirebaseAuth.instance.currentUser.uid);
DocumentSnapshot doc = await docRef.get();
final data = doc.data() as Map<String, dynamic>;
// ...