我正在尝试从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。如果我在方法中打印字符串,它将起作用。如何返回字符串?
我们将不胜感激。
干杯保罗
答案 0 :(得分:2)
您需要使用async
和await
来等待数据被完全检索,然后才能返回数据。
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