Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Flatter中的Firebase检索文档内容_Firebase_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

从Flatter中的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 =

我正在尝试从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。如果我在方法中打印字符串,它就会工作。如何返回字符串

非常感谢您的帮助


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);