在Flutter中从Firebase检索文档内容

时间:2020-01-18 15:29:42

标签: firebase flutter dart google-cloud-firestore

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

它是这样的: 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;
 });
}

该方法仅返回null。如果我在方法中打印字符串,它将起作用。如何返回字符串?

我们将不胜感激。

干杯保罗

1 个答案:

答案 0 :(得分:2)

您需要使用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