【问题标题】:Retrieve Document content from Firebase in Flutter在 Flutter 中从 Firebase 中检索文档内容
【发布时间】:2020-01-18 15:29:42
【问题描述】:

我正在尝试从 Firebase 集合中检索用户数据。

这是它的样子:

这是我写的获取数据的方法:

static String getUserData(creatorId, keyword) {
 var documentName = Firestore.instance
     .collection('users')
     .document(creatorId)
     .get()
     .then((DocumentSnapshot) {
   String data = (DocumentSnapshot.data['$keyword'].toString());
   return data;
 });
}

该方法只返回n​​ull。如果我在方法中打印字符串,它就可以工作。如何返回字符串?

我们将不胜感激。

干杯保罗

【问题讨论】:

  • 您似乎陷入了对延迟执行的常见误解。此函数的返回值为 null,因为该函数不返回任何内容。它只是将documentName 分配给未来并返回。这个函数必须返回一个 Future 并且调用者必须等待它。

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

您需要使用asyncawait 才能等待数据完全检索,然后才能返回数据。

async 和 await 关键字提供了一种声明方式来定义异步函数并使用它们的结果。

例如:

Future<String> getUserData(creatorId, keyword) async {
 var documentName = await Firestore.instance
     .collection('users')
     .document(creatorId)
     .get()
     .then((DocumentSnapshot) {
   String data = (DocumentSnapshot.data['$keyword'].toString());
   return data;
 });
}

然后你因为getUserData返回一个Future,你可以使用await关键字来调用它:

await getUserData(id, key);

https://dart.dev/codelabs/async-await#working-with-futures-async-and-await

【讨论】:

  • @LEAF 如果回答对你有帮助,请点赞并标记为正确,让其他用户知道它有帮助,谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 2020-01-05
  • 2021-02-01
  • 2021-04-13
  • 1970-01-01
相关资源
最近更新 更多