我如何知道 Firestore 上的交易是否成功?

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)

cre*_*not 5

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将更新的交易已经完成,一旦与服务器达到还给你。

要了解为什么无法在客户端评估交易结果,请在此处查看我的问题答案