从Flatter中的Firebase检索文档内容
我正在尝试从Firebase集合检索用户数据 这就是它看起来的样子: 这是我编写的获取数据的方法:从Flatter中的Firebase检索文档内容,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我正在尝试从Firebase集合检索用户数据 这就是它看起来的样子: 这是我编写的获取数据的方法: static String getUserData(creatorId, keyword) { var documentName = Firestore.instance .collection('users') .document(creatorId) .get() .then((DocumentSnapshot) { String data =
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。如果我在方法中打印字符串,它就会工作。如何返回字符串
非常感谢您的帮助
Cheers Paul您需要使用
异步
和等待
来等待数据被完全检索,然后才能返回数据
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;
});
}
看来您被一个关于延迟执行的常见误解所困扰。此函数的返回值为null,因为该函数不返回任何内容。它只是将
documentName
分配给未来并返回。此函数必须返回未来,调用方必须等待。@LEAF如果答案对您有帮助,请将其投票并标记为正确,以便其他用户知道它有帮助,谢谢!
await getUserData(id, key);