Edu*_*chi 8 transactions dart flutter google-cloud-firestore
有没有什么方法可以知道交易是否成功?如果我上传大型档案并花费太多时间,我需要实现加载“小部件动画”。然后成功后换屏幕,但我不知道如何。
谢谢!
交易示例:
CollectionReference reference = Firestore.instance.collection("collection_example");
Firestore.instance.runTransaction((Transaction transaction) async {
await transaction.set(reference, {
"index_1":"ABC",
"index_2": 2,
"index_3": {"mapIndex_1": "ABC"}
});
});
Run Code Online (Sandbox Code Playgroud)
runTransaction在这种情况下,您无法从您的电话中收到该信息,因为它返回一个Future<Map<String, dynamic>>. 正如我所检查的,它总是会返回一个空的 Map. 因此,没有什么可以从runTransaction函数本身得到的。
不过,您可以轻松地Stream从您的参考资料中获得更新,看起来像这样:
DocumentReference documentReference;
firestore.runTransaction( // firestore in this case is your Firestore instance
(Transaction transaction) async {
// whatever you do here with your reference
await transaction.update(
documentReference,
...
);
documentReference.snapshots().listen((DocumentSnapshot event) {
// here you could e.g. check if the transaction on your reference was succesful
});
Run Code Online (Sandbox Code Playgroud)
正如你可以看到我用snapshots() Stream<DocumentSnapshot)的相同 DocumentReference的交易中运行。在Stream将更新的交易已经完成,一旦与服务器达到还给你。
要了解为什么无法在客户端评估交易结果,请在此处查看我的问题的答案。
| 归档时间: |
|
| 查看次数: |
2105 次 |
| 最近记录: |