Flutter 和 Cloud Firestore 获取问题
Posted
技术标签:
【中文标题】Flutter 和 Cloud Firestore 获取问题【英文标题】:Flutter and Cloud Firestore fetch issue 【发布时间】:2018-09-25 10:42:28 【问题描述】:我在使用 Firebase 的 Flutter 和 Cloud Firestore 时遇到问题。 我已经可以将数据添加到数据库中,但我无法获取它,因为每次调用我的方法时,我都会返回 null。
这是我的代码:
dynamic getFromDatabase(String path, String item)
DocumentReference _docu = Firestore.instance.document('$path');
var data;
_docu.get().then((datasnapshot)
if(datasnapshot.exists)
data = datasnapshot.data['$item'];
);
return data;
这是我调用方法的地方:
print((await getFromDatabase("User/$_uid","Vorname")));
还有错误:
I/flutter (26289): null
【问题讨论】:
【参考方案1】:一个不错的选择是使用 FutureBuilder 小部件。 您可以在 StatelessWidget 中使用它,避免实现 StatefulWidget
FutureBuilder(
future: Firestore.instance.document(path).get(),
builder: (context, snapshot)
if (snapshot.connectionState != ConnectionState.done)
return CircularProgressIndicator();
if (snapshot.hasError)
return Text('Something went wrong.');
DocumentSnapshot docSnap = snapshot.data as DocumentSnapshot;
return Text(docSnap.data['doc_field']);
)
【讨论】:
【参考方案2】:我以前没有使用过 Firestore。只有firebase的正常数据库。但我认为这是一个异步时间问题。看起来它在完成数据快照之前返回 null。 (PS.datasnapshot 拼写错误)。尝试这样的事情。就像我说的。不确定它是否有效。
Future<String> getFromDatabse(String path, String item)
DocumentReference _docu = Firestore.instance.document(path);
_docu.get().then((datasnapchot)
if(datasnapchot.exists)
return datasnapchot.data[item];
);
在调用方法时。这样做。
String getData = await getFromDatabse(path, item);
(PS也是数据库拼错哈哈)
【讨论】:
所以我稍微改变了我的代码,我尝试了你所说的但它仍然无法正常工作。 你能做一个1个文件的例子,我可以复制粘贴到我的开发环境中吗?我会尝试在几个小时内为您修复它。以上是关于Flutter 和 Cloud Firestore 获取问题的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:cloud_firestore 的构建错误:高于版本“0.7.4”
Flutter - 任务':cloud_firestore:compileDebugJavaWithJavac'的执行失败
Flutter/cloud-firestore“任务已经完成”异常
Cloud Firestore 连接我的 Flutter Windows 应用
Flutter:[cloud_firestore/unknown] NoSuchMethodError:null 上的无效成员:'includeMetadataChanges'(Flutter Web